@sandbank.dev/boxlite 0.3.2 → 0.3.3

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
@@ -63,6 +63,15 @@ const { stdout } = await sandbox.exec('echo hello')
63
63
  await provider.destroy(sandbox.id)
64
64
  ```
65
65
 
66
+ ### Local OCI rootfs (skip registry pull)
67
+
68
+ If `image` is an absolute path, it is treated as a local OCI layout directory:
69
+
70
+ ```typescript
71
+ // Export image: skopeo copy docker-daemon:myimage:latest oci:~/.boxlite/myimage-oci:latest
72
+ const sandbox = await provider.create({ image: '/Users/you/.boxlite/myimage-oci' })
73
+ ```
74
+
66
75
  ### OAuth2 authentication (remote mode)
67
76
 
68
77
  ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,YAAY,EAGZ,UAAU,EACV,cAAc,EACd,WAAW,EAIZ,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,oBAAoB,EAA6B,MAAM,YAAY,CAAA;AAoKjF,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,IAAI,aAAY;IACzB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;gBAEtD,MAAM,EAAE,oBAAoB;IAalC,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IA8C5D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAW/C,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA0B1D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,8EAA8E;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,YAAY,EAGZ,UAAU,EACV,cAAc,EACd,WAAW,EAIZ,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,oBAAoB,EAA6B,MAAM,YAAY,CAAA;AAoKjF,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,IAAI,aAAY;IACzB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;gBAEtD,MAAM,EAAE,oBAAoB;IAalC,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAgD5D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAW/C,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA0B1D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,8EAA8E;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
package/dist/adapter.js CHANGED
@@ -162,8 +162,10 @@ export class BoxLiteAdapter {
162
162
  }
163
163
  async createSandbox(config) {
164
164
  try {
165
+ // If image looks like an absolute path, treat it as a local OCI rootfs
166
+ const isLocalPath = config.image.startsWith('/');
165
167
  const box = await this.client.createBox({
166
- image: config.image,
168
+ ...(isLocalPath ? { rootfs_path: config.image } : { image: config.image }),
167
169
  cpu: config.resources?.cpu,
168
170
  memory_mb: config.resources?.memory,
169
171
  disk_size_gb: config.resources?.disk,
@@ -1 +1 @@
1
- {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../src/local-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,aAAa,EAGb,kBAAkB,EAEnB,MAAM,YAAY,CAAA;AAuVnB;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAsRlF"}
1
+ {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../src/local-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,aAAa,EAGb,kBAAkB,EAEnB,MAAM,YAAY,CAAA;AA6XnB;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAsRlF"}
@@ -37,39 +37,28 @@ class Bridge:
37
37
  if self._runtime is not None:
38
38
  return
39
39
 
40
- # Try Boxlite(Options(home_dir=...)) the canonical API
40
+ # Create a Boxlite runtime for the custom home_dir, then use SimpleBox
41
+ # with that runtime. SimpleBox's exec is more stable for rapid consecutive
42
+ # calls than Boxlite.create(BoxOptions).exec().
41
43
  Options = getattr(boxlite, "Options", None)
42
44
  Boxlite = getattr(boxlite, "Boxlite", None)
43
45
  if Options and Boxlite:
44
46
  try:
45
47
  opts = Options(home_dir=self._home)
46
- rt = Boxlite(opts)
47
- self._runtime = rt
48
- return
48
+ self._boxlite_rt = Boxlite(opts)
49
49
  except Exception:
50
- pass
51
-
52
- # Try legacy BoxliteRuntime / Runtime
53
- for attr in ("BoxliteRuntime", "Runtime", "runtime"):
54
- cls = getattr(boxlite, attr, None)
55
- if cls is None:
56
- continue
57
- try:
58
- rt = cls(home=self._home) if callable(cls) else cls
59
- if asyncio.iscoroutinefunction(getattr(rt, "start", None)):
60
- await rt.start()
61
- self._runtime = rt
62
- return
63
- except Exception:
64
- continue
50
+ self._boxlite_rt = None
51
+ else:
52
+ self._boxlite_rt = None
65
53
 
66
- # Fallback: no runtime, use SimpleBox per box
54
+ # Use SimpleBox with the runtime (handles home_dir correctly)
67
55
  self._runtime = "simple_box"
68
56
 
69
57
  async def create(self, params):
70
58
  await self._ensure_runtime()
71
59
 
72
- image = params["image"]
60
+ image = params.get("image", "")
61
+ rootfs = params.get("rootfs_path")
73
62
  now = datetime.now(timezone.utc).isoformat()
74
63
 
75
64
  # Normalize env/ports
@@ -82,7 +71,8 @@ class Bridge:
82
71
 
83
72
  if self._runtime == "simple_box":
84
73
  # SimpleBox uses: image, memory_mib, cpus, disk_size_gb, env, working_dir
85
- sb_kwargs = {"image": image}
74
+ # rootfs_path overrides image when provided (local OCI layout directory)
75
+ sb_kwargs = {"rootfs_path": rootfs} if rootfs else {"image": image}
86
76
  if params.get("cpu") is not None:
87
77
  sb_kwargs["cpus"] = params["cpu"]
88
78
  if params.get("memory_mb") is not None:
@@ -96,6 +86,9 @@ class Bridge:
96
86
  if ports is not None:
97
87
  sb_kwargs["ports"] = ports
98
88
 
89
+ # Pass the Boxlite runtime to SimpleBox so it uses the correct home_dir
90
+ if getattr(self, "_boxlite_rt", None) is not None:
91
+ sb_kwargs["runtime"] = self._boxlite_rt
99
92
  sb = boxlite.SimpleBox(**sb_kwargs)
100
93
  box = await sb.__aenter__()
101
94
  box_id = str(getattr(box, "id", None)
@@ -107,21 +100,28 @@ class Bridge:
107
100
  # Boxlite.create(BoxOptions(...), name=None)
108
101
  BoxOptions = getattr(boxlite, "BoxOptions", None)
109
102
  if BoxOptions is not None:
110
- opts = BoxOptions(image=image)
103
+ opt_kwargs = {}
104
+ if rootfs:
105
+ opt_kwargs["rootfs_path"] = rootfs
106
+ else:
107
+ opt_kwargs["image"] = image
111
108
  if params.get("cpu") is not None:
112
- opts.cpus = params["cpu"]
109
+ opt_kwargs["cpus"] = params["cpu"]
113
110
  if params.get("memory_mb") is not None:
114
- opts.memory_mib = params["memory_mb"]
111
+ opt_kwargs["memory_mib"] = params["memory_mb"]
115
112
  if params.get("disk_size_gb") is not None:
116
- opts.disk_size_gb = params["disk_size_gb"]
113
+ opt_kwargs["disk_size_gb"] = params["disk_size_gb"]
117
114
  if env is not None:
118
- opts.env = env
115
+ opt_kwargs["env"] = env
119
116
  if params.get("working_dir") is not None:
120
- opts.working_dir = params["working_dir"]
117
+ opt_kwargs["working_dir"] = params["working_dir"]
118
+ if ports is not None:
119
+ opt_kwargs["ports"] = ports
120
+ opts = BoxOptions(**opt_kwargs)
121
121
  box = await self._runtime.create(opts)
122
122
  else:
123
123
  # Legacy fallback: pass as kwargs
124
- kwargs = {"image": image}
124
+ kwargs = {"rootfs_path": rootfs} if rootfs else {"image": image}
125
125
  for k in ("cpu", "memory_mb", "disk_size_gb", "working_dir"):
126
126
  if params.get(k) is not None:
127
127
  kwargs[k] = params[k]
@@ -206,23 +206,61 @@ class Bridge:
206
206
  if result is None:
207
207
  raise RuntimeError(f"All exec strategies failed: {'; '.join(errors)}")
208
208
 
209
- # Execution object: call .wait() to get ExecResult
210
- if hasattr(result, "wait") and callable(result.wait):
211
- result = await result.wait()
209
+ stdout = ""
210
+ stderr = ""
211
+ exit_code = 0
212
212
 
213
- # Extract stdout/stderr may be str attributes (ExecResult) or methods (Execution)
214
- stdout = getattr(result, "stdout", "")
215
- stderr = getattr(result, "stderr", "")
216
- if callable(stdout):
217
- stdout = stdout()
218
- if callable(stderr):
219
- stderr = stderr()
213
+ # Execution object (Boxlite runtime API): collect stdout/stderr streams, then wait
214
+ if hasattr(result, "wait") and callable(result.wait):
215
+ async def _collect(stream_fn):
216
+ try:
217
+ buf = bytearray()
218
+ async for chunk in stream_fn():
219
+ if isinstance(chunk, (bytes, bytearray)):
220
+ buf.extend(chunk)
221
+ else:
222
+ buf.extend(str(chunk).encode("utf-8"))
223
+ return buf.decode("utf-8", errors="replace")
224
+ except Exception:
225
+ return ""
226
+
227
+ # Read stdout/stderr concurrently to avoid pipe deadlocks
228
+ tasks = []
229
+ has_stdout = hasattr(result, "stdout") and callable(result.stdout)
230
+ has_stderr = hasattr(result, "stderr") and callable(result.stderr)
231
+ if has_stdout:
232
+ tasks.append(asyncio.create_task(_collect(result.stdout)))
233
+ if has_stderr:
234
+ tasks.append(asyncio.create_task(_collect(result.stderr)))
235
+
236
+ if tasks:
237
+ collected = await asyncio.gather(*tasks)
238
+ idx = 0
239
+ if has_stdout:
240
+ stdout = collected[idx]; idx += 1
241
+ if has_stderr:
242
+ stderr = collected[idx]
243
+
244
+ exec_result = await result.wait()
245
+ exit_code = int(getattr(exec_result, "exit_code",
246
+ getattr(exec_result, "returncode", 0)) or 0)
247
+ else:
248
+ # SimpleBox / legacy: result already has stdout/stderr as attributes
249
+ raw_stdout = getattr(result, "stdout", "")
250
+ raw_stderr = getattr(result, "stderr", "")
251
+ if callable(raw_stdout):
252
+ raw_stdout = raw_stdout()
253
+ if callable(raw_stderr):
254
+ raw_stderr = raw_stderr()
255
+ stdout = str(raw_stdout or "")
256
+ stderr = str(raw_stderr or "")
257
+ exit_code = int(getattr(result, "exit_code",
258
+ getattr(result, "returncode", 0)) or 0)
220
259
 
221
260
  return {
222
- "stdout": str(stdout or ""),
223
- "stderr": str(stderr or ""),
224
- "exit_code": int(getattr(result, "exit_code",
225
- getattr(result, "returncode", 0)) or 0),
261
+ "stdout": stdout,
262
+ "stderr": stderr,
263
+ "exit_code": exit_code,
226
264
  }
227
265
 
228
266
  async def destroy(self, box_id):
package/dist/types.d.ts CHANGED
@@ -90,7 +90,9 @@ export interface BoxLiteSnapshot {
90
90
  container_disk_bytes?: number;
91
91
  }
92
92
  export interface BoxLiteCreateParams {
93
- image: string;
93
+ image?: string;
94
+ /** Path to a local OCI layout directory. When set, overrides `image` (no registry pull). */
95
+ rootfs_path?: string;
94
96
  name?: string;
95
97
  cpu?: number;
96
98
  memory_mb?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAA;IACb,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AAI3E,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACpE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3G,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;IACvF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;IAC/E,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACrE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACxD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,uDAAuD;IACvD,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAID,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,SAAS,CAAA;AAEb,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sandbank.dev/boxlite",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "BoxLite bare-metal sandbox adapter for Sandbank",
5
5
  "license": "MIT",
6
6
  "type": "module",