@intentic/sandbox-run 1.346.0 → 1.348.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 CHANGED
@@ -44,6 +44,12 @@ flowchart LR
44
44
  name that is not a sandbox's), off a daemon's address (`slugOfDaemonUrl`, guarded and lowercased, undefined rather
45
45
  than a throw), and the 12-hex id off a connect token through Web Crypto (`sandboxIdOfToken`, the browser's twin of
46
46
  the contract's `sandboxIdFromToken`). It imports nothing, so the editor takes it without the run emitter.
47
+ - `./setup-progress` reads a sandbox's setup off what `ic sandbox connect` prints: the plan of phases weighed in
48
+ seconds (`setupSteps`), the `intentic: [<phase>]` markers that move a cursor down it, ic's byte readings and docker's
49
+ layer lines for the pull, and the bar and the time left they make (`advance`, `tick`, `remainingMsOf`). It holds no
50
+ words, so the desktop app's install screen (its `setupPlan.ts`) and the web's "Set it up on <machine>" press
51
+ (`features/setup/progress/`) each name the steps in their own catalog and draw the same run the same way. Its tables
52
+ are held to `setup-progress.fixture.json`, with ic's `ui.rs` and the desktop app's `setup_progress.rs`.
47
53
  - `flyMachineConfig` declares no Fly service or check: a hosted machine is reached only down the tunnel its daemon
48
54
  dials to the edge, like every other sandbox, so nothing on Fly routes to it.
49
55
 
@@ -53,6 +59,7 @@ flowchart LR
53
59
  - [src/fly.ts](src/fly.ts) — the hosted flavour: `flyMachineConfig` and the single-volume layout.
54
60
  - [src/quote.ts](src/quote.ts) — quoters to compose outward, one per parser a value crosses.
55
61
  - [src/slug.ts](src/slug.ts) — a sandbox's slug and id read back off a container name, an address or a token.
62
+ - [src/setup-progress.ts](src/setup-progress.ts) — a setup's progress read off its output, and the record it is held to.
56
63
  - [src/index.test.ts](src/index.test.ts) — the emitted argv and directive handling, by example.
57
64
 
58
65
  GPU preflight uses `gpuProbeArgv` to exercise an actual Docker `--gpus=all` device request with an image already on the host. `gpuProbePassed` requires a physical GPU listing; a registered NVIDIA runtime or CDI setting alone is insufficient. Fly machines stamp GPU access as unsupported.
@@ -0,0 +1,84 @@
1
+ export interface SetupStep {
2
+ readonly phase: string;
3
+ readonly weight: number;
4
+ }
5
+ export interface PlanInput {
6
+ readonly dockerReady: boolean;
7
+ readonly syncing: boolean;
8
+ readonly os: string;
9
+ readonly imageReady?: boolean | undefined;
10
+ }
11
+ export declare const setupSteps: (input: PlanInput) => readonly SetupStep[];
12
+ export interface StepLine {
13
+ readonly phase: string;
14
+ readonly message: string;
15
+ }
16
+ export declare const parseStep: (line: string) => StepLine | undefined;
17
+ export declare const LAYER_DONE: {
18
+ readonly "Pulling fs layer": 0;
19
+ readonly Waiting: 0;
20
+ readonly Downloading: 0.15;
21
+ readonly "Verifying Checksum": 0.6;
22
+ readonly "Download complete": 0.6;
23
+ readonly Extracting: 0.8;
24
+ readonly "Pull complete": 1;
25
+ readonly "Already exists": 1;
26
+ };
27
+ export declare const parseLayer: (line: string) => {
28
+ readonly id: string;
29
+ readonly done: number;
30
+ } | undefined;
31
+ export declare const parseDownload: (line: string) => {
32
+ readonly done: number;
33
+ readonly total: number;
34
+ } | undefined;
35
+ export interface Sample {
36
+ readonly at: number;
37
+ readonly done: number;
38
+ }
39
+ export interface Download {
40
+ readonly done: number;
41
+ readonly total: number;
42
+ readonly base: number;
43
+ readonly from: number;
44
+ readonly samples: readonly Sample[];
45
+ readonly completeAt: number | undefined;
46
+ }
47
+ export type ProgressEvent = {
48
+ readonly kind: `line`;
49
+ readonly text: string;
50
+ } | {
51
+ readonly kind: `exit`;
52
+ readonly ok: boolean;
53
+ } | {
54
+ readonly kind: `started`;
55
+ };
56
+ export interface Progress<S extends SetupStep = SetupStep> {
57
+ readonly plan: readonly S[];
58
+ readonly index: number;
59
+ readonly detail: string;
60
+ readonly layers: Readonly<Record<string, number>>;
61
+ readonly download?: Download | undefined;
62
+ readonly startedAt: number;
63
+ readonly stepStartedAt: number;
64
+ readonly percent: number;
65
+ readonly floor: number;
66
+ readonly ended: `ok` | `failed` | undefined;
67
+ }
68
+ export declare const startProgress: <S extends SetupStep>(plan: readonly S[], now: number, floor?: number) => Progress<S>;
69
+ export declare const approach: (x: number, knee?: number, cap?: number) => number;
70
+ export declare const downloadRate: (download: Download | undefined) => number | undefined;
71
+ export declare const stepFraction: (state: Progress, now: number) => number;
72
+ export declare const advance: <S extends SetupStep>(state: Progress<S>, event: ProgressEvent, now: number) => Progress<S>;
73
+ export declare const tick: <S extends SetupStep>(state: Progress<S>, now: number) => Progress<S>;
74
+ export type StepState = `done` | `running` | `waiting` | `stopped`;
75
+ export declare const stepStateOf: (state: Progress, at: number) => StepState;
76
+ export declare const stepShare: (state: Progress, at: number) => number;
77
+ export interface DownloadFacts {
78
+ readonly done: number;
79
+ readonly total: number;
80
+ readonly bytesPerSecond: number | undefined;
81
+ }
82
+ export declare const downloadOf: (state: Progress) => DownloadFacts | undefined;
83
+ export declare const remainingMsOf: (state: Progress, now: number) => number | undefined;
84
+ //# sourceMappingURL=setup-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-progress.d.ts","sourceRoot":"","sources":["../src/setup-progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ export const setupSteps = (input) => {
2
+ const windows = input.os === `windows`;
3
+ const fetch = { phase: `fetching-ic`, weight: 15 };
4
+ const check = { phase: `checking-docker`, weight: windows ? 12 : 5 };
5
+ const install = input.dockerReady ? [] : [{ phase: `installing-docker`, weight: windows ? 600 : 420 }];
6
+ return [
7
+ ...(windows ? [fetch, check, ...install] : [check, ...install, fetch]),
8
+ { phase: `preflight`, weight: 10 },
9
+ { phase: `claiming-code`, weight: 5 },
10
+ { phase: `pulling-image`, weight: input.imageReady === true ? 2 : 240 },
11
+ { phase: `starting-sandbox`, weight: 25 },
12
+ { phase: `waiting-health`, weight: 40 },
13
+ ...(input.syncing ? [{ phase: `desktop-sync`, weight: 46 }] : []),
14
+ { phase: `verifying`, weight: 8 },
15
+ { phase: `connecting-machine`, weight: input.syncing ? 13 : 75 },
16
+ ];
17
+ };
18
+ const STEP = /^intentic: \[([a-z-]+)\] (.*)$/;
19
+ export const parseStep = (line) => {
20
+ const found = STEP.exec(line);
21
+ return found === null ? undefined : { phase: found[1] ?? ``, message: (found[2] ?? ``).trim() };
22
+ };
23
+ export const LAYER_DONE = {
24
+ "Pulling fs layer": 0,
25
+ Waiting: 0,
26
+ Downloading: 0.15,
27
+ "Verifying Checksum": 0.6,
28
+ "Download complete": 0.6,
29
+ Extracting: 0.8,
30
+ "Pull complete": 1,
31
+ "Already exists": 1,
32
+ };
33
+ const isLayerState = (text) => Object.hasOwn(LAYER_DONE, text);
34
+ const LAYER = /^([0-9a-fA-F]{6,}): (Pulling fs layer|Waiting|Downloading|Verifying Checksum|Download complete|Extracting|Pull complete|Already exists)/;
35
+ export const parseLayer = (line) => {
36
+ const found = LAYER.exec(line);
37
+ const state = found?.[2] ?? ``;
38
+ return found === null ? undefined : { id: found[1] ?? ``, done: isLayerState(state) ? LAYER_DONE[state] : 0 };
39
+ };
40
+ const DOWNLOAD = /\bdownloading the sandbox image: (\d+) of (\d+) MB\b/;
41
+ const MIB = 1024 * 1024;
42
+ export const parseDownload = (line) => {
43
+ const found = DOWNLOAD.exec(line);
44
+ const total = Number(found?.[2] ?? 0) * MIB;
45
+ return found === null || total <= 0 ? undefined : { done: Math.min(Number(found[1]) * MIB, total), total };
46
+ };
47
+ export const startProgress = (plan, now, floor = 0) => ({
48
+ plan,
49
+ index: -1,
50
+ detail: ``,
51
+ layers: {},
52
+ startedAt: now,
53
+ stepStartedAt: now,
54
+ percent: floor,
55
+ floor,
56
+ ended: undefined,
57
+ });
58
+ const ownShare = (state) => Math.max(0, (state.percent - state.floor) / Math.max(100 - state.floor, 1));
59
+ const total = (plan) => plan.reduce((sum, step) => sum + step.weight, 0);
60
+ export const approach = (x, knee = 0.6, cap = 0.9) => {
61
+ if (x <= knee) {
62
+ return Math.max(0, x);
63
+ }
64
+ const gap = cap - knee;
65
+ return cap - gap / (1 + (x - knee) / (2 * gap));
66
+ };
67
+ const DOWNLOAD_CAP = 0.9;
68
+ const LOADED_CAP = 0.98;
69
+ const LOAD_SECONDS = 60;
70
+ const RATE_WINDOW_MS = 60_000;
71
+ const RATE_MIN_SPAN_MS = 10_000;
72
+ const downloadFraction = (download, now) => {
73
+ if (download.completeAt !== undefined) {
74
+ const loading = (now - download.completeAt) / (LOAD_SECONDS * 1000);
75
+ return DOWNLOAD_CAP + (LOADED_CAP - DOWNLOAD_CAP) * approach(loading, 0.5, 1);
76
+ }
77
+ const share = (download.done - download.from) / Math.max(download.total - download.from, 1);
78
+ return download.base + (DOWNLOAD_CAP - download.base) * Math.min(Math.max(share, 0), 1);
79
+ };
80
+ export const downloadRate = (download) => {
81
+ const first = download?.samples[0];
82
+ const last = download?.samples.at(-1);
83
+ if (first === undefined || last === undefined || last.at - first.at < RATE_MIN_SPAN_MS) {
84
+ return undefined;
85
+ }
86
+ const rate = (last.done - first.done) / ((last.at - first.at) / 1000);
87
+ return rate > 0 ? rate : undefined;
88
+ };
89
+ export const stepFraction = (state, now) => {
90
+ if (state.download !== undefined) {
91
+ return downloadFraction(state.download, now);
92
+ }
93
+ const layers = Object.values(state.layers);
94
+ if (layers.length > 0) {
95
+ return layers.reduce((sum, done) => sum + done, 0) / layers.length;
96
+ }
97
+ const weight = state.plan[state.index]?.weight ?? 0;
98
+ if (weight <= 0) {
99
+ return 0;
100
+ }
101
+ return approach((now - state.stepStartedAt) / (weight * 1000));
102
+ };
103
+ const foldDownload = (state, reading, now) => {
104
+ const before = state.download;
105
+ if (before === undefined || before.total !== reading.total) {
106
+ return {
107
+ done: reading.done,
108
+ total: reading.total,
109
+ base: Math.min(stepFraction(state, now), DOWNLOAD_CAP),
110
+ from: reading.done,
111
+ samples: [{ at: now, done: reading.done }],
112
+ completeAt: reading.done >= reading.total ? now : undefined,
113
+ };
114
+ }
115
+ const done = Math.max(before.done, reading.done);
116
+ return {
117
+ ...before,
118
+ done,
119
+ samples: [...before.samples, { at: now, done }].filter((sample) => sample.at >= now - RATE_WINDOW_MS),
120
+ completeAt: before.completeAt ?? (done >= before.total ? now : undefined),
121
+ };
122
+ };
123
+ const percentOf = (state, now) => {
124
+ if (state.index < 0) {
125
+ return state.floor;
126
+ }
127
+ const whole = total(state.plan);
128
+ if (whole <= 0) {
129
+ return state.floor;
130
+ }
131
+ const behind = state.plan.slice(0, state.index).reduce((sum, step) => sum + step.weight, 0);
132
+ const inside = (state.plan[state.index]?.weight ?? 0) * stepFraction(state, now);
133
+ return Math.min(99, state.floor + (100 - state.floor) * ((behind + inside) / whole));
134
+ };
135
+ export const advance = (state, event, now) => {
136
+ if (event.kind === `exit`) {
137
+ return { ...state, percent: event.ok ? 100 : state.percent, ended: event.ok ? `ok` : `failed` };
138
+ }
139
+ if (event.kind !== `line`) {
140
+ return state;
141
+ }
142
+ const step = parseStep(event.text);
143
+ if (step !== undefined) {
144
+ const at = state.plan.findIndex((planned) => planned.phase === step.phase);
145
+ const index = at > state.index ? at : state.index;
146
+ const moved = index !== state.index;
147
+ const next = {
148
+ ...state,
149
+ index,
150
+ detail: step.message,
151
+ layers: moved ? {} : state.layers,
152
+ download: moved ? undefined : state.download,
153
+ stepStartedAt: moved ? now : state.stepStartedAt,
154
+ };
155
+ return { ...next, percent: Math.max(state.percent, percentOf(next, now)) };
156
+ }
157
+ const reading = parseDownload(event.text);
158
+ if (reading !== undefined) {
159
+ const next = { ...state, download: foldDownload(state, reading, now) };
160
+ return { ...next, percent: Math.max(state.percent, percentOf(next, now)) };
161
+ }
162
+ const layer = parseLayer(event.text);
163
+ if (layer !== undefined) {
164
+ const next = { ...state, layers: { ...state.layers, [layer.id]: layer.done }, download: undefined };
165
+ return { ...next, percent: Math.max(state.percent, percentOf(next, now)) };
166
+ }
167
+ return state;
168
+ };
169
+ export const tick = (state, now) => state.ended === undefined ? { ...state, percent: Math.max(state.percent, percentOf(state, now)) } : state;
170
+ export const stepStateOf = (state, at) => {
171
+ if (state.ended === `ok` || at < state.index) {
172
+ return `done`;
173
+ }
174
+ if (state.ended === `failed`) {
175
+ return `stopped`;
176
+ }
177
+ return at > state.index ? `waiting` : `running`;
178
+ };
179
+ export const stepShare = (state, at) => (state.plan[at]?.weight ?? 0) / Math.max(total(state.plan), 1);
180
+ export const downloadOf = (state) => state.download === undefined || state.ended !== undefined
181
+ ? undefined
182
+ : { done: state.download.done, total: state.download.total, bytesPerSecond: downloadRate(state.download) };
183
+ const NOMINAL_MS = 1000;
184
+ const paceOf = (state, now) => {
185
+ const consumed = ownShare(state) * total(state.plan);
186
+ if (consumed <= 0) {
187
+ return NOMINAL_MS;
188
+ }
189
+ const measured = (now - state.startedAt) / consumed;
190
+ return Math.min(Math.max(measured, NOMINAL_MS * 0.4), NOMINAL_MS * 4);
191
+ };
192
+ const pullLeftMs = (state) => {
193
+ const download = state.download;
194
+ const rate = downloadRate(download);
195
+ if (download === undefined || rate === undefined || download.completeAt !== undefined) {
196
+ return undefined;
197
+ }
198
+ return ((download.total - download.done) / rate) * 1000 + LOAD_SECONDS * 1000;
199
+ };
200
+ export const remainingMsOf = (state, now) => {
201
+ if (state.index < 0 || state.ended !== undefined) {
202
+ return undefined;
203
+ }
204
+ const pull = pullLeftMs(state);
205
+ if (pull === undefined) {
206
+ return total(state.plan) * (1 - ownShare(state)) * paceOf(state, now);
207
+ }
208
+ const after = state.plan.slice(state.index + 1).reduce((sum, step) => sum + step.weight, 0);
209
+ return pull + after * paceOf(state, now);
210
+ };
211
+ //# sourceMappingURL=setup-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-progress.js","sourceRoot":"","sources":["../src/setup-progress.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/sandbox-run",
3
- "version": "1.346.0",
3
+ "version": "1.348.0",
4
4
  "description": "The sandbox container's run contract, names, capability posture, env allowlist, runtime directives, and the docker-run emitter every creation path composes from",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -50,6 +50,17 @@
50
50
  "default": "./dist/quote.js"
51
51
  }
52
52
  },
53
+ "./setup-progress": {
54
+ "types": "./dist/setup-progress.d.ts",
55
+ "import": {
56
+ "@intentic/src": "./src/setup-progress.ts",
57
+ "default": "./dist/setup-progress.js"
58
+ },
59
+ "require": {
60
+ "@intentic/src": "./src/setup-progress.ts",
61
+ "default": "./dist/setup-progress.js"
62
+ }
63
+ },
53
64
  "./slug": {
54
65
  "types": "./dist/slug.d.ts",
55
66
  "import": {
@@ -63,7 +74,7 @@
63
74
  }
64
75
  },
65
76
  "dependencies": {
66
- "@intentic/constants": "1.346.0",
77
+ "@intentic/constants": "1.348.0",
67
78
  "tslib": "2.8.1"
68
79
  },
69
80
  "devDependencies": {