isol8 0.12.0-alpha.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -6318,7 +6318,7 @@ var require_bcrypt_pbkdf = __commonJS((exports, module) => {
6318
6318
 
6319
6319
  // node_modules/cpu-features/build/Release/cpufeatures.node
6320
6320
  var require_cpufeatures = __commonJS((exports, module) => {
6321
- module.exports = __require("./cpufeatures-8g73ch7n.node");
6321
+ module.exports = __require("./cpufeatures-tjjrgpt7.node");
6322
6322
  });
6323
6323
 
6324
6324
  // node_modules/cpu-features/lib/index.js
@@ -6931,12 +6931,12 @@ var require_utils2 = __commonJS((exports, module) => {
6931
6931
 
6932
6932
  // node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node
6933
6933
  var require_sshcrypto = __commonJS((exports, module) => {
6934
- module.exports = __require("./sshcrypto-f6atjna1.node");
6934
+ module.exports = __require("./sshcrypto-0209sx47.node");
6935
6935
  });
6936
6936
 
6937
6937
  // node_modules/ssh2/lib/protocol/crypto/poly1305.js
6938
6938
  var require_poly1305 = __commonJS((exports, module) => {
6939
- var __dirname = "/Users/dhruv/Developer/Projects/isol8/node_modules/ssh2/lib/protocol/crypto", __filename = "/Users/dhruv/Developer/Projects/isol8/node_modules/ssh2/lib/protocol/crypto/poly1305.js";
6939
+ var __dirname = "/home/runner/work/isol8/isol8/node_modules/ssh2/lib/protocol/crypto", __filename = "/home/runner/work/isol8/isol8/node_modules/ssh2/lib/protocol/crypto/poly1305.js";
6940
6940
  var createPoly1305 = function() {
6941
6941
  var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : undefined;
6942
6942
  if (typeof __filename !== "undefined")
@@ -8681,7 +8681,7 @@ ${formatted}-----END ${type} KEY-----`;
8681
8681
  }
8682
8682
  return Buffer.from(hex, "hex");
8683
8683
  }
8684
- return function genOpenSSLRSAPriv(n, e, d, iqmp, p, q) {
8684
+ return function genOpenSSLRSAPriv2(n, e, d, iqmp, p, q) {
8685
8685
  const bn_d = bigIntFromBuffer(d);
8686
8686
  const dmp1 = bigIntToBuffer(bn_d % (bigIntFromBuffer(p) - 1n));
8687
8687
  const dmq1 = bigIntToBuffer(bn_d % (bigIntFromBuffer(q) - 1n));
@@ -9709,7 +9709,7 @@ ${formatted}-----END ${type} KEY-----`;
9709
9709
 
9710
9710
  // node_modules/ssh2/lib/agent.js
9711
9711
  var require_agent = __commonJS((exports, module) => {
9712
- var __dirname = "/Users/dhruv/Developer/Projects/isol8/node_modules/ssh2/lib";
9712
+ var __dirname = "/home/runner/work/isol8/isol8/node_modules/ssh2/lib";
9713
9713
  var { Socket } = __require("net");
9714
9714
  var { Duplex } = __require("stream");
9715
9715
  var { resolve } = __require("path");
@@ -21682,7 +21682,7 @@ var require__stream_writable = __commonJS((exports, module) => {
21682
21682
  }
21683
21683
  });
21684
21684
  } else {
21685
- realHasInstance = function realHasInstance(object) {
21685
+ realHasInstance = function realHasInstance2(object) {
21686
21686
  return object instanceof this;
21687
21687
  };
21688
21688
  }
@@ -22480,28 +22480,28 @@ var require_end_of_stream = __commonJS((exports, module) => {
22480
22480
  callback = once(callback || noop);
22481
22481
  var readable = opts.readable || opts.readable !== false && stream.readable;
22482
22482
  var writable = opts.writable || opts.writable !== false && stream.writable;
22483
- var onlegacyfinish = function onlegacyfinish() {
22483
+ var onlegacyfinish = function onlegacyfinish2() {
22484
22484
  if (!stream.writable)
22485
22485
  onfinish();
22486
22486
  };
22487
22487
  var writableEnded = stream._writableState && stream._writableState.finished;
22488
- var onfinish = function onfinish() {
22488
+ var onfinish = function onfinish2() {
22489
22489
  writable = false;
22490
22490
  writableEnded = true;
22491
22491
  if (!readable)
22492
22492
  callback.call(stream);
22493
22493
  };
22494
22494
  var readableEnded = stream._readableState && stream._readableState.endEmitted;
22495
- var onend = function onend() {
22495
+ var onend = function onend2() {
22496
22496
  readable = false;
22497
22497
  readableEnded = true;
22498
22498
  if (!writable)
22499
22499
  callback.call(stream);
22500
22500
  };
22501
- var onerror = function onerror(err) {
22501
+ var onerror = function onerror2(err) {
22502
22502
  callback.call(stream, err);
22503
22503
  };
22504
- var onclose = function onclose() {
22504
+ var onclose = function onclose2() {
22505
22505
  var err;
22506
22506
  if (readable && !readableEnded) {
22507
22507
  if (!stream._readableState || !stream._readableState.ended)
@@ -22514,7 +22514,7 @@ var require_end_of_stream = __commonJS((exports, module) => {
22514
22514
  return callback.call(stream, err);
22515
22515
  }
22516
22516
  };
22517
- var onrequest = function onrequest() {
22517
+ var onrequest = function onrequest2() {
22518
22518
  stream.req.on("finish", onfinish);
22519
22519
  };
22520
22520
  if (isRequest(stream)) {
@@ -22671,7 +22671,7 @@ var require_async_iterator = __commonJS((exports, module) => {
22671
22671
  });
22672
22672
  });
22673
22673
  }), _Object$setPrototypeO), AsyncIteratorPrototype);
22674
- var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
22674
+ var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream) {
22675
22675
  var _Object$create;
22676
22676
  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
22677
22677
  value: stream,
@@ -22860,7 +22860,7 @@ var require__stream_readable = __commonJS((exports, module) => {
22860
22860
  var Duplex;
22861
22861
  Readable.ReadableState = ReadableState;
22862
22862
  var EE = __require("events").EventEmitter;
22863
- var EElistenerCount = function EElistenerCount(emitter, type) {
22863
+ var EElistenerCount = function EElistenerCount2(emitter, type) {
22864
22864
  return emitter.listeners(type).length;
22865
22865
  };
22866
22866
  var Stream = __require("stream");
@@ -22877,7 +22877,7 @@ var require__stream_readable = __commonJS((exports, module) => {
22877
22877
  if (debugUtil && debugUtil.debuglog) {
22878
22878
  debug = debugUtil.debuglog("stream");
22879
22879
  } else {
22880
- debug = function debug() {};
22880
+ debug = function debug2() {};
22881
22881
  }
22882
22882
  var BufferList = require_buffer_list();
22883
22883
  var destroyImpl = require_destroy();
@@ -25535,14 +25535,14 @@ var require_BufferList = __commonJS((exports, module) => {
25535
25535
  if (srcEnd <= 0) {
25536
25536
  return dst || Buffer2.alloc(0);
25537
25537
  }
25538
- const copy = !!dst;
25538
+ const copy2 = !!dst;
25539
25539
  const off = this._offset(srcStart);
25540
25540
  const len = srcEnd - srcStart;
25541
25541
  let bytes = len;
25542
- let bufoff = copy && dstStart || 0;
25542
+ let bufoff = copy2 && dstStart || 0;
25543
25543
  let start = off[1];
25544
25544
  if (srcStart === 0 && srcEnd === this.length) {
25545
- if (!copy) {
25545
+ if (!copy2) {
25546
25546
  return this._bufs.length === 1 ? this._bufs[0] : Buffer2.concat(this._bufs, this.length);
25547
25547
  }
25548
25548
  for (let i = 0;i < this._bufs.length; i++) {
@@ -25552,9 +25552,9 @@ var require_BufferList = __commonJS((exports, module) => {
25552
25552
  return dst;
25553
25553
  }
25554
25554
  if (bytes <= this._bufs[off[0]].length - start) {
25555
- return copy ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off[0]].slice(start, start + bytes);
25555
+ return copy2 ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off[0]].slice(start, start + bytes);
25556
25556
  }
25557
- if (!copy) {
25557
+ if (!copy2) {
25558
25558
  dst = Buffer2.allocUnsafe(len);
25559
25559
  }
25560
25560
  for (let i = off[0];i < this._bufs.length; i++) {
@@ -25776,7 +25776,7 @@ var require_bl = __commonJS((exports, module) => {
25776
25776
  }
25777
25777
  if (typeof callback === "function") {
25778
25778
  this._callback = callback;
25779
- const piper = function piper(err) {
25779
+ const piper = function piper2(err) {
25780
25780
  if (this._callback) {
25781
25781
  this._callback(err);
25782
25782
  this._callback = null;
@@ -34839,7 +34839,7 @@ var require_writer2 = __commonJS((exports, module) => {
34839
34839
  this.tail = this.head;
34840
34840
  this.states = null;
34841
34841
  }
34842
- var create = function create() {
34842
+ var create = function create2() {
34843
34843
  return util.Buffer ? function create_buffer_setup() {
34844
34844
  return (Writer.create = function create_buffer() {
34845
34845
  return new BufferWriter;
@@ -35063,12 +35063,12 @@ var require_reader2 = __commonJS((exports, module) => {
35063
35063
  if (buffer instanceof Uint8Array || Array.isArray(buffer))
35064
35064
  return new Reader(buffer);
35065
35065
  throw Error("illegal buffer");
35066
- } : function create_array(buffer) {
35066
+ } : function create_array2(buffer) {
35067
35067
  if (Array.isArray(buffer))
35068
35068
  return new Reader(buffer);
35069
35069
  throw Error("illegal buffer");
35070
35070
  };
35071
- var create = function create() {
35071
+ var create = function create2() {
35072
35072
  return util.Buffer ? function create_buffer_setup(buffer) {
35073
35073
  return (Reader.create = function create_buffer(buffer2) {
35074
35074
  return util.Buffer.isBuffer(buffer2) ? new BufferReader(buffer2) : create_array(buffer2);
@@ -35494,10 +35494,10 @@ var require_fetch = __commonJS((exports, module) => {
35494
35494
  // node_modules/@protobufjs/path/index.js
35495
35495
  var require_path = __commonJS((exports) => {
35496
35496
  var path = exports;
35497
- var isAbsolute = path.isAbsolute = function isAbsolute(path2) {
35497
+ var isAbsolute = path.isAbsolute = function isAbsolute2(path2) {
35498
35498
  return /^(?:\/|\w+:)/.test(path2);
35499
35499
  };
35500
- var normalize = path.normalize = function normalize(path2) {
35500
+ var normalize = path.normalize = function normalize2(path2) {
35501
35501
  path2 = path2.replace(/\\/g, "/").replace(/\/{2,}/g, "/");
35502
35502
  var parts = path2.split("/"), absolute = isAbsolute(path2), prefix = "";
35503
35503
  if (absolute)
@@ -35662,7 +35662,7 @@ var require_namespace = __commonJS((exports, module) => {
35662
35662
  object.onRemove(this);
35663
35663
  return clearCache(this);
35664
35664
  };
35665
- Namespace.prototype.define = function define(path, json) {
35665
+ Namespace.prototype.define = function define2(path, json) {
35666
35666
  if (util.isString(path))
35667
35667
  path = path.split(".");
35668
35668
  else if (!Array.isArray(path))
@@ -42478,7 +42478,7 @@ var require_src3 = __commonJS((exports) => {
42478
42478
 
42479
42479
  // node_modules/@grpc/grpc-js/build/src/channelz.js
42480
42480
  var require_channelz = __commonJS((exports) => {
42481
- var __dirname = "/Users/dhruv/Developer/Projects/isol8/node_modules/@grpc/grpc-js/build/src";
42481
+ var __dirname = "/home/runner/work/isol8/isol8/node_modules/@grpc/grpc-js/build/src";
42482
42482
  Object.defineProperty(exports, "__esModule", { value: true });
42483
42483
  exports.registerChannelzSocket = exports.registerChannelzServer = exports.registerChannelzSubchannel = exports.registerChannelzChannel = exports.ChannelzCallTrackerStub = exports.ChannelzCallTracker = exports.ChannelzChildrenTrackerStub = exports.ChannelzChildrenTracker = exports.ChannelzTrace = exports.ChannelzTraceStub = undefined;
42484
42484
  exports.unregisterChannelzRef = unregisterChannelzRef;
@@ -47881,7 +47881,7 @@ var require_duration = __commonJS((exports) => {
47881
47881
 
47882
47882
  // node_modules/@grpc/grpc-js/build/src/orca.js
47883
47883
  var require_orca = __commonJS((exports) => {
47884
- var __dirname = "/Users/dhruv/Developer/Projects/isol8/node_modules/@grpc/grpc-js/build/src";
47884
+ var __dirname = "/home/runner/work/isol8/isol8/node_modules/@grpc/grpc-js/build/src";
47885
47885
  Object.defineProperty(exports, "__esModule", { value: true });
47886
47886
  exports.OrcaOobMetricsSubchannelWrapper = exports.GRPC_METRICS_HEADER = exports.ServerMetricRecorder = exports.PerRequestMetricRecorder = undefined;
47887
47887
  exports.createOrcaClient = createOrcaClient;
@@ -53270,7 +53270,7 @@ var require_dist = __commonJS((exports) => {
53270
53270
 
53271
53271
  // node_modules/dockerode/lib/session.js
53272
53272
  var require_session = __commonJS((exports, module) => {
53273
- var __dirname = "/Users/dhruv/Developer/Projects/isol8/node_modules/dockerode/lib";
53273
+ var __dirname = "/home/runner/work/isol8/isol8/node_modules/dockerode/lib";
53274
53274
  var grpc = require_src4();
53275
53275
  var protoLoader = require_src5();
53276
53276
  var path = __require("path");
@@ -54496,7 +54496,7 @@ var require_docker = __commonJS((exports, module) => {
54496
54496
  stream: true,
54497
54497
  stdout: true,
54498
54498
  stderr: true
54499
- }, function handler(err2, stream) {
54499
+ }, function handler2(err2, stream) {
54500
54500
  if (err2)
54501
54501
  return callback(err2, null, container);
54502
54502
  hub.emit("stream", stream);
@@ -55592,15 +55592,6 @@ function validatePackageName(name) {
55592
55592
  }
55593
55593
 
55594
55594
  // src/engine/image-builder.ts
55595
- var exports_image_builder = {};
55596
- __export(exports_image_builder, {
55597
- normalizePackages: () => normalizePackages,
55598
- imageExists: () => imageExists,
55599
- getCustomImageTag: () => getCustomImageTag,
55600
- ensureImages: () => ensureImages,
55601
- buildCustomImages: () => buildCustomImages,
55602
- buildBaseImages: () => buildBaseImages
55603
- });
55604
55595
  import { createHash as createHash2 } from "node:crypto";
55605
55596
  import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
55606
55597
  import { join as join3 } from "node:path";
@@ -55659,9 +55650,8 @@ async function removeImage(docker, imageId) {
55659
55650
  logger.debug(`[ImageBuilder] Could not remove image ${imageId.slice(0, 12)}: ${err}`);
55660
55651
  }
55661
55652
  }
55662
- async function buildBaseImages(docker, onProgress, force = false, onlyRuntimes) {
55663
- const allRuntimes = RuntimeRegistry.list();
55664
- const runtimes = onlyRuntimes ? allRuntimes.filter((r) => onlyRuntimes.includes(r.name)) : allRuntimes;
55653
+ async function buildBaseImages(docker, onProgress, force = false) {
55654
+ const runtimes = RuntimeRegistry.list();
55665
55655
  const dockerHash = computeDockerDirHash();
55666
55656
  logger.debug(`[ImageBuilder] Docker directory hash: ${dockerHash.slice(0, 16)}...`);
55667
55657
  for (const adapter of runtimes) {
@@ -55811,26 +55801,6 @@ ${installCmd}
55811
55801
  }
55812
55802
  onProgress?.({ runtime, status: "done" });
55813
55803
  }
55814
- async function imageExists(docker, imageName) {
55815
- try {
55816
- await docker.getImage(imageName).inspect();
55817
- return true;
55818
- } catch {
55819
- return false;
55820
- }
55821
- }
55822
- async function ensureImages(docker, onProgress) {
55823
- const runtimes = RuntimeRegistry.list();
55824
- const missing = [];
55825
- for (const adapter of runtimes) {
55826
- if (!await imageExists(docker, adapter.image)) {
55827
- missing.push(adapter.name);
55828
- }
55829
- }
55830
- if (missing.length > 0) {
55831
- await buildBaseImages(docker, onProgress, false, missing);
55832
- }
55833
- }
55834
55804
  var DOCKERFILE_DIR, LABELS, DOCKER_BUILD_FILES;
55835
55805
  var init_image_builder = __esm(() => {
55836
55806
  init_runtime();
@@ -56729,26 +56699,6 @@ class DockerIsol8 {
56729
56699
  resolvedImage = legacyCustomTag;
56730
56700
  } catch {}
56731
56701
  }
56732
- try {
56733
- await this.docker.getImage(resolvedImage).inspect();
56734
- } catch {
56735
- logger.debug(`[ImageBuilder] Image ${resolvedImage} not found. Building...`);
56736
- const { buildBaseImages: buildBaseImages2, buildCustomImages: buildCustomImages2 } = await Promise.resolve().then(() => (init_image_builder(), exports_image_builder));
56737
- if (resolvedImage !== adapter.image && normalizedDeps.length > 0) {
56738
- try {
56739
- await this.docker.getImage(adapter.image).inspect();
56740
- } catch {
56741
- logger.debug(`[ImageBuilder] Base image ${adapter.image} missing. Building...`);
56742
- await buildBaseImages2(this.docker, undefined, false, [adapter.name]);
56743
- }
56744
- logger.debug(`[ImageBuilder] Building custom image for ${adapter.name}...`);
56745
- const dummyConfig = { dependencies: { [adapter.name]: normalizedDeps } };
56746
- await buildCustomImages2(this.docker, dummyConfig, undefined, false);
56747
- } else {
56748
- logger.debug(`[ImageBuilder] Building base image for ${adapter.name}...`);
56749
- await buildBaseImages2(this.docker, undefined, false, [adapter.name]);
56750
- }
56751
- }
56752
56702
  this.imageCache.set(cacheKey, resolvedImage);
56753
56703
  return resolvedImage;
56754
56704
  }
@@ -57306,7 +57256,6 @@ class DockerIsol8 {
57306
57256
  }
57307
57257
  var import_dockerode, SANDBOX_WORKDIR = "/sandbox", MAX_OUTPUT_BYTES, PROXY_PORT = 8118, PROXY_STARTUP_TIMEOUT_MS = 5000, PROXY_POLL_INTERVAL_MS = 100;
57308
57258
  var init_docker = __esm(() => {
57309
- import_dockerode = __toESM(require_docker(), 1);
57310
57259
  init_runtime();
57311
57260
  init_logger();
57312
57261
  init_audit();
@@ -57314,6 +57263,7 @@ var init_docker = __esm(() => {
57314
57263
  init_default_seccomp_profile();
57315
57264
  init_image_builder();
57316
57265
  init_pool();
57266
+ import_dockerode = __toESM(require_docker(), 1);
57317
57267
  MAX_OUTPUT_BYTES = 1024 * 1024;
57318
57268
  });
57319
57269
 
@@ -57322,7 +57272,7 @@ var package_default;
57322
57272
  var init_package = __esm(() => {
57323
57273
  package_default = {
57324
57274
  name: "isol8",
57325
- version: "0.12.0-alpha.0",
57275
+ version: "0.12.0",
57326
57276
  description: "Secure code execution engine for AI agents",
57327
57277
  author: "Illusion47586",
57328
57278
  license: "MIT",
@@ -59954,7 +59904,7 @@ onetime.callCount = (function_) => {
59954
59904
  };
59955
59905
  var onetime_default = onetime;
59956
59906
 
59957
- // node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/signals.js
59907
+ // node_modules/signal-exit/dist/mjs/signals.js
59958
59908
  var signals = [];
59959
59909
  signals.push("SIGHUP", "SIGINT", "SIGTERM");
59960
59910
  if (process.platform !== "win32") {
@@ -59964,7 +59914,7 @@ if (process.platform === "linux") {
59964
59914
  signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
59965
59915
  }
59966
59916
 
59967
- // node_modules/restore-cursor/node_modules/signal-exit/dist/mjs/index.js
59917
+ // node_modules/signal-exit/dist/mjs/index.js
59968
59918
  var processOk = (process3) => !!process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
59969
59919
  var kExitEmitter = Symbol.for("signal-exit emitter");
59970
59920
  var global2 = globalThis;
@@ -63080,7 +63030,13 @@ async function downloadServerBinary(binaryPath) {
63080
63030
  logger.debug(`[Serve] Download URL: ${url}`);
63081
63031
  const spinner = ora(`Downloading isol8 server v${VERSION}...`).start();
63082
63032
  try {
63083
- const response = await fetch(url, { redirect: "follow" });
63033
+ let response = await fetch(url, { redirect: "follow" });
63034
+ if (response.status === 404) {
63035
+ const fallbackUrl = `https://github.com/Illusion47586/isol8/releases/latest/download/${binaryName}`;
63036
+ logger.debug(`[Serve] Binary not found for v${VERSION}, trying latest from ${fallbackUrl}`);
63037
+ spinner.text = `v${VERSION} not found, downloading latest available version...`;
63038
+ response = await fetch(fallbackUrl, { redirect: "follow" });
63039
+ }
63084
63040
  if (!response.ok) {
63085
63041
  spinner.fail(`Failed to download server binary (HTTP ${response.status})`);
63086
63042
  if (response.status === 404) {
@@ -63615,4 +63571,4 @@ if (!process.argv.slice(2).length) {
63615
63571
  }
63616
63572
  program2.parse();
63617
63573
 
63618
- //# debugId=3F3ACB896496CF6F64756E2164756E21
63574
+ //# debugId=0B5A0E438410953564756E2164756E21
package/dist/index.js CHANGED
@@ -1,20 +1,4 @@
1
- import { createRequire } from "node:module";
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
1
  var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
2
  var __export = (target, all) => {
19
3
  for (var name in all)
20
4
  __defProp(target, name, {
@@ -25,7 +9,6 @@ var __export = (target, all) => {
25
9
  });
26
10
  };
27
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
- var __require = /* @__PURE__ */ createRequire(import.meta.url);
29
12
 
30
13
  // src/runtime/adapter.ts
31
14
  var adapters, extensionMap, RuntimeRegistry;
@@ -630,124 +613,9 @@ var init_default_seccomp_profile = __esm(() => {
630
613
  });
631
614
  });
632
615
 
633
- // src/engine/utils.ts
634
- var exports_utils = {};
635
- __export(exports_utils, {
636
- validatePackageName: () => validatePackageName,
637
- truncateOutput: () => truncateOutput,
638
- parseMemoryLimit: () => parseMemoryLimit,
639
- maskSecrets: () => maskSecrets,
640
- extractFromTar: () => extractFromTar,
641
- createTarBuffer: () => createTarBuffer
642
- });
643
- function parseMemoryLimit(limit) {
644
- const match = limit.match(/^(\d+(?:\.\d+)?)\s*([kmgt]?)b?$/i);
645
- if (!match) {
646
- throw new Error(`Invalid memory limit format: "${limit}". Use e.g. "512m", "1g".`);
647
- }
648
- const value = Number.parseFloat(match[1]);
649
- const unit = (match[2] || "b").toLowerCase();
650
- const multipliers = {
651
- b: 1,
652
- k: 1024,
653
- m: 1024 ** 2,
654
- g: 1024 ** 3,
655
- t: 1024 ** 4
656
- };
657
- return Math.floor(value * (multipliers[unit] ?? 1));
658
- }
659
- function truncateOutput(output, maxBytes) {
660
- const encoder = new TextEncoder;
661
- const bytes = encoder.encode(output);
662
- if (bytes.length <= maxBytes) {
663
- return { text: output, truncated: false };
664
- }
665
- const decoder = new TextDecoder("utf-8", { fatal: false });
666
- const truncated = decoder.decode(bytes.slice(0, maxBytes));
667
- return {
668
- text: `${truncated}
669
-
670
- --- OUTPUT TRUNCATED (${bytes.length} bytes, limit: ${maxBytes}) ---`,
671
- truncated: true
672
- };
673
- }
674
- function maskSecrets(text, secrets) {
675
- let result = text;
676
- for (const value of Object.values(secrets)) {
677
- if (value.length > 0) {
678
- result = result.replaceAll(value, "***");
679
- }
680
- }
681
- return result;
682
- }
683
- function createTarBuffer(filePath, content) {
684
- const data = typeof content === "string" ? Buffer.from(content, "utf-8") : content;
685
- const headerSize = 512;
686
- const dataBlocks = Math.ceil(data.length / 512);
687
- const totalSize = headerSize + dataBlocks * 512 + 1024;
688
- const buf = Buffer.alloc(totalSize);
689
- buf.write(filePath.replace(/^\//, ""), 0, 100, "utf-8");
690
- buf.write("0000644\x00", 100, 8, "utf-8");
691
- buf.write("0000000\x00", 108, 8, "utf-8");
692
- buf.write("0000000\x00", 116, 8, "utf-8");
693
- buf.write(`${data.length.toString(8).padStart(11, "0")}\x00`, 124, 12, "utf-8");
694
- buf.write(`${Math.floor(Date.now() / 1000).toString(8).padStart(11, "0")}\x00`, 136, 12, "utf-8");
695
- buf.write("0", 156, 1, "utf-8");
696
- buf.write("ustar\x00", 257, 6, "utf-8");
697
- buf.write("00", 263, 2, "utf-8");
698
- buf.write(" ", 148, 8, "utf-8");
699
- let checksum = 0;
700
- for (let i = 0;i < headerSize; i++) {
701
- checksum += buf[i];
702
- }
703
- buf.write(`${checksum.toString(8).padStart(6, "0")}\x00 `, 148, 8, "utf-8");
704
- data.copy(buf, headerSize);
705
- return buf;
706
- }
707
- function extractFromTar(tarBuffer, targetPath) {
708
- const normalizedTarget = targetPath.replace(/^\//, "");
709
- const basename = targetPath.split("/").pop() ?? targetPath;
710
- let offset = 0;
711
- while (offset < tarBuffer.length - 512) {
712
- const nameEnd = tarBuffer.indexOf(0, offset);
713
- const name = tarBuffer.subarray(offset, Math.min(nameEnd, offset + 100)).toString("utf-8");
714
- if (name.length === 0) {
715
- break;
716
- }
717
- const sizeStr = tarBuffer.subarray(offset + 124, offset + 136).toString("utf-8").trim();
718
- const size = Number.parseInt(sizeStr, 8);
719
- if (Number.isNaN(size)) {
720
- break;
721
- }
722
- const dataStart = offset + 512;
723
- const dataBlocks = Math.ceil(size / 512);
724
- if (name === normalizedTarget || name.endsWith(`/${normalizedTarget}`) || name === basename) {
725
- return Buffer.from(tarBuffer.subarray(dataStart, dataStart + size));
726
- }
727
- offset = dataStart + dataBlocks * 512;
728
- }
729
- throw new Error(`File "${targetPath}" not found in tar archive`);
730
- }
731
- function validatePackageName(name) {
732
- if (!/^[@a-zA-Z0-9_./\-=]+$/.test(name)) {
733
- throw new Error(`Invalid package name: "${name}". Only alphanumeric, -, _, ., /, @, and = are allowed.`);
734
- }
735
- return name;
736
- }
737
-
738
616
  // src/engine/image-builder.ts
739
- var exports_image_builder = {};
740
- __export(exports_image_builder, {
741
- normalizePackages: () => normalizePackages,
742
- imageExists: () => imageExists,
743
- getCustomImageTag: () => getCustomImageTag,
744
- ensureImages: () => ensureImages,
745
- buildCustomImages: () => buildCustomImages,
746
- buildBaseImages: () => buildBaseImages
747
- });
748
617
  import { createHash as createHash2 } from "node:crypto";
749
618
  import { existsSync as existsSync3, readFileSync as readFileSync2 } from "node:fs";
750
- import { join as join3 } from "node:path";
751
619
  function resolveDockerDir() {
752
620
  const fromBundled = new URL("./docker", import.meta.url).pathname;
753
621
  if (existsSync3(fromBundled)) {
@@ -755,19 +623,6 @@ function resolveDockerDir() {
755
623
  }
756
624
  return new URL("../../docker", import.meta.url).pathname;
757
625
  }
758
- function computeDockerDirHash() {
759
- const hash = createHash2("sha256");
760
- const files = [...DOCKER_BUILD_FILES].sort();
761
- for (const file of files) {
762
- const filePath = join3(DOCKERFILE_DIR, file);
763
- if (existsSync3(filePath)) {
764
- const content = readFileSync2(filePath);
765
- hash.update(file);
766
- hash.update(content);
767
- }
768
- }
769
- return hash.digest("hex");
770
- }
771
626
  function computeDepsHash(runtime, packages) {
772
627
  const hash = createHash2("sha256");
773
628
  hash.update(runtime);
@@ -785,206 +640,11 @@ function getCustomImageTag(runtime, packages) {
785
640
  const shortHash = depsHash.slice(0, 12);
786
641
  return `isol8:${runtime}-custom-${shortHash}`;
787
642
  }
788
- async function getImageLabels(docker, imageName) {
789
- try {
790
- const image = docker.getImage(imageName);
791
- const inspect = await image.inspect();
792
- return inspect.Config?.Labels ?? {};
793
- } catch {
794
- return null;
795
- }
796
- }
797
- async function removeImage(docker, imageId) {
798
- try {
799
- const image = docker.getImage(imageId);
800
- await image.remove();
801
- logger.debug(`[ImageBuilder] Removed old image: ${imageId.slice(0, 12)}`);
802
- } catch (err) {
803
- logger.debug(`[ImageBuilder] Could not remove image ${imageId.slice(0, 12)}: ${err}`);
804
- }
805
- }
806
- async function buildBaseImages(docker, onProgress, force = false, onlyRuntimes) {
807
- const allRuntimes = RuntimeRegistry.list();
808
- const runtimes = onlyRuntimes ? allRuntimes.filter((r) => onlyRuntimes.includes(r.name)) : allRuntimes;
809
- const dockerHash = computeDockerDirHash();
810
- logger.debug(`[ImageBuilder] Docker directory hash: ${dockerHash.slice(0, 16)}...`);
811
- for (const adapter of runtimes) {
812
- const target = adapter.name;
813
- const imageName = adapter.image;
814
- if (!force) {
815
- const labels = await getImageLabels(docker, imageName);
816
- if (labels && labels[LABELS.dockerHash] === dockerHash) {
817
- logger.debug(`[ImageBuilder] Base image ${target} is up to date, skipping build`);
818
- onProgress?.({ runtime: target, status: "done", message: "Up to date" });
819
- continue;
820
- }
821
- }
822
- let oldImageId = null;
823
- try {
824
- const oldImage = await docker.getImage(imageName).inspect();
825
- oldImageId = oldImage.Id;
826
- logger.debug(`[ImageBuilder] Existing image ${target} ID: ${oldImageId.slice(0, 12)}`);
827
- } catch {
828
- logger.debug(`[ImageBuilder] No existing image for ${target}`);
829
- }
830
- onProgress?.({ runtime: target, status: "building" });
831
- try {
832
- const stream = await docker.buildImage({ context: DOCKERFILE_DIR, src: DOCKER_BUILD_FILES }, {
833
- t: imageName,
834
- target,
835
- dockerfile: "Dockerfile",
836
- labels: {
837
- [LABELS.dockerHash]: dockerHash
838
- }
839
- });
840
- await new Promise((resolve2, reject) => {
841
- docker.modem.followProgress(stream, (err) => {
842
- if (err) {
843
- reject(err);
844
- } else {
845
- resolve2();
846
- }
847
- });
848
- });
849
- if (oldImageId) {
850
- await removeImage(docker, oldImageId);
851
- }
852
- onProgress?.({ runtime: target, status: "done" });
853
- } catch (err) {
854
- const message = err instanceof Error ? err.message : String(err);
855
- onProgress?.({ runtime: target, status: "error", message });
856
- throw new Error(`Failed to build image for ${target}: ${message}`);
857
- }
858
- }
859
- }
860
- async function buildCustomImages(docker, config, onProgress, force = false) {
861
- const deps = config.dependencies;
862
- const python = deps.python ? normalizePackages(deps.python) : [];
863
- const node = deps.node ? normalizePackages(deps.node) : [];
864
- const bun = deps.bun ? normalizePackages(deps.bun) : [];
865
- const deno = deps.deno ? normalizePackages(deps.deno) : [];
866
- const bash = deps.bash ? normalizePackages(deps.bash) : [];
867
- if (python.length) {
868
- await buildCustomImage(docker, "python", python, onProgress, force);
869
- }
870
- if (node.length) {
871
- await buildCustomImage(docker, "node", node, onProgress, force);
872
- }
873
- if (bun.length) {
874
- await buildCustomImage(docker, "bun", bun, onProgress, force);
875
- }
876
- if (deno.length) {
877
- await buildCustomImage(docker, "deno", deno, onProgress, force);
878
- }
879
- if (bash.length) {
880
- await buildCustomImage(docker, "bash", bash, onProgress, force);
881
- }
882
- }
883
- async function buildCustomImage(docker, runtime, packages, onProgress, force = false) {
884
- const normalizedPackages = normalizePackages(packages);
885
- const tag = getCustomImageTag(runtime, normalizedPackages);
886
- const depsHash = computeDepsHash(runtime, normalizedPackages);
887
- logger.debug(`[ImageBuilder] ${runtime} custom deps hash: ${depsHash.slice(0, 16)}...`);
888
- if (!force) {
889
- const labels = await getImageLabels(docker, tag);
890
- if (labels && labels[LABELS.depsHash] === depsHash) {
891
- logger.debug(`[ImageBuilder] Custom image ${runtime} is up to date, skipping build`);
892
- onProgress?.({ runtime, status: "done", message: "Up to date" });
893
- return;
894
- }
895
- }
896
- let oldImageId = null;
897
- try {
898
- const oldImage = await docker.getImage(tag).inspect();
899
- oldImageId = oldImage.Id;
900
- logger.debug(`[ImageBuilder] Existing custom image ${runtime} ID: ${oldImageId.slice(0, 12)}`);
901
- } catch {
902
- logger.debug(`[ImageBuilder] No existing custom image for ${runtime}`);
903
- }
904
- onProgress?.({
905
- runtime,
906
- status: "building",
907
- message: `Custom: ${normalizedPackages.join(", ")}`
908
- });
909
- let installCmd;
910
- switch (runtime) {
911
- case "python":
912
- installCmd = `RUN pip install --no-cache-dir ${normalizedPackages.join(" ")}`;
913
- break;
914
- case "node":
915
- installCmd = `RUN npm install -g ${normalizedPackages.join(" ")}`;
916
- break;
917
- case "bun":
918
- installCmd = `RUN bun install -g ${normalizedPackages.join(" ")}`;
919
- break;
920
- case "deno":
921
- installCmd = normalizedPackages.map((p) => `RUN deno cache ${p}`).join(`
922
- `);
923
- break;
924
- case "bash":
925
- installCmd = `RUN apk add --no-cache ${normalizedPackages.join(" ")}`;
926
- break;
927
- default:
928
- throw new Error(`Unknown runtime: ${runtime}`);
929
- }
930
- const dockerfileContent = `FROM isol8:${runtime}
931
- ${installCmd}
932
- `;
933
- const { createTarBuffer: createTarBuffer2, validatePackageName: validatePackageName2 } = await Promise.resolve().then(() => exports_utils);
934
- const { Readable } = await import("node:stream");
935
- normalizedPackages.forEach(validatePackageName2);
936
- const tarBuffer = createTarBuffer2("Dockerfile", dockerfileContent);
937
- const stream = await docker.buildImage(Readable.from(tarBuffer), {
938
- t: tag,
939
- dockerfile: "Dockerfile",
940
- labels: {
941
- [LABELS.depsHash]: depsHash
942
- }
943
- });
944
- await new Promise((resolve2, reject) => {
945
- docker.modem.followProgress(stream, (err) => {
946
- if (err) {
947
- reject(err);
948
- } else {
949
- resolve2();
950
- }
951
- });
952
- });
953
- if (oldImageId) {
954
- await removeImage(docker, oldImageId);
955
- }
956
- onProgress?.({ runtime, status: "done" });
957
- }
958
- async function imageExists(docker, imageName) {
959
- try {
960
- await docker.getImage(imageName).inspect();
961
- return true;
962
- } catch {
963
- return false;
964
- }
965
- }
966
- async function ensureImages(docker, onProgress) {
967
- const runtimes = RuntimeRegistry.list();
968
- const missing = [];
969
- for (const adapter of runtimes) {
970
- if (!await imageExists(docker, adapter.image)) {
971
- missing.push(adapter.name);
972
- }
973
- }
974
- if (missing.length > 0) {
975
- await buildBaseImages(docker, onProgress, false, missing);
976
- }
977
- }
978
- var DOCKERFILE_DIR, LABELS, DOCKER_BUILD_FILES;
643
+ var DOCKERFILE_DIR;
979
644
  var init_image_builder = __esm(() => {
980
645
  init_runtime();
981
646
  init_logger();
982
647
  DOCKERFILE_DIR = resolveDockerDir();
983
- LABELS = {
984
- dockerHash: "org.isol8.build.hash",
985
- depsHash: "org.isol8.deps.hash"
986
- };
987
- DOCKER_BUILD_FILES = ["Dockerfile", "proxy.sh", "proxy-handler.sh"];
988
648
  });
989
649
 
990
650
  // src/engine/pool.ts
@@ -1266,6 +926,96 @@ function calculateResourceDelta(before, after) {
1266
926
  };
1267
927
  }
1268
928
 
929
+ // src/engine/utils.ts
930
+ function parseMemoryLimit(limit) {
931
+ const match = limit.match(/^(\d+(?:\.\d+)?)\s*([kmgt]?)b?$/i);
932
+ if (!match) {
933
+ throw new Error(`Invalid memory limit format: "${limit}". Use e.g. "512m", "1g".`);
934
+ }
935
+ const value = Number.parseFloat(match[1]);
936
+ const unit = (match[2] || "b").toLowerCase();
937
+ const multipliers = {
938
+ b: 1,
939
+ k: 1024,
940
+ m: 1024 ** 2,
941
+ g: 1024 ** 3,
942
+ t: 1024 ** 4
943
+ };
944
+ return Math.floor(value * (multipliers[unit] ?? 1));
945
+ }
946
+ function truncateOutput(output, maxBytes) {
947
+ const encoder = new TextEncoder;
948
+ const bytes = encoder.encode(output);
949
+ if (bytes.length <= maxBytes) {
950
+ return { text: output, truncated: false };
951
+ }
952
+ const decoder = new TextDecoder("utf-8", { fatal: false });
953
+ const truncated = decoder.decode(bytes.slice(0, maxBytes));
954
+ return {
955
+ text: `${truncated}
956
+
957
+ --- OUTPUT TRUNCATED (${bytes.length} bytes, limit: ${maxBytes}) ---`,
958
+ truncated: true
959
+ };
960
+ }
961
+ function maskSecrets(text, secrets) {
962
+ let result = text;
963
+ for (const value of Object.values(secrets)) {
964
+ if (value.length > 0) {
965
+ result = result.replaceAll(value, "***");
966
+ }
967
+ }
968
+ return result;
969
+ }
970
+ function createTarBuffer(filePath, content) {
971
+ const data = typeof content === "string" ? Buffer.from(content, "utf-8") : content;
972
+ const headerSize = 512;
973
+ const dataBlocks = Math.ceil(data.length / 512);
974
+ const totalSize = headerSize + dataBlocks * 512 + 1024;
975
+ const buf = Buffer.alloc(totalSize);
976
+ buf.write(filePath.replace(/^\//, ""), 0, 100, "utf-8");
977
+ buf.write("0000644\x00", 100, 8, "utf-8");
978
+ buf.write("0000000\x00", 108, 8, "utf-8");
979
+ buf.write("0000000\x00", 116, 8, "utf-8");
980
+ buf.write(`${data.length.toString(8).padStart(11, "0")}\x00`, 124, 12, "utf-8");
981
+ buf.write(`${Math.floor(Date.now() / 1000).toString(8).padStart(11, "0")}\x00`, 136, 12, "utf-8");
982
+ buf.write("0", 156, 1, "utf-8");
983
+ buf.write("ustar\x00", 257, 6, "utf-8");
984
+ buf.write("00", 263, 2, "utf-8");
985
+ buf.write(" ", 148, 8, "utf-8");
986
+ let checksum = 0;
987
+ for (let i = 0;i < headerSize; i++) {
988
+ checksum += buf[i];
989
+ }
990
+ buf.write(`${checksum.toString(8).padStart(6, "0")}\x00 `, 148, 8, "utf-8");
991
+ data.copy(buf, headerSize);
992
+ return buf;
993
+ }
994
+ function extractFromTar(tarBuffer, targetPath) {
995
+ const normalizedTarget = targetPath.replace(/^\//, "");
996
+ const basename = targetPath.split("/").pop() ?? targetPath;
997
+ let offset = 0;
998
+ while (offset < tarBuffer.length - 512) {
999
+ const nameEnd = tarBuffer.indexOf(0, offset);
1000
+ const name = tarBuffer.subarray(offset, Math.min(nameEnd, offset + 100)).toString("utf-8");
1001
+ if (name.length === 0) {
1002
+ break;
1003
+ }
1004
+ const sizeStr = tarBuffer.subarray(offset + 124, offset + 136).toString("utf-8").trim();
1005
+ const size = Number.parseInt(sizeStr, 8);
1006
+ if (Number.isNaN(size)) {
1007
+ break;
1008
+ }
1009
+ const dataStart = offset + 512;
1010
+ const dataBlocks = Math.ceil(size / 512);
1011
+ if (name === normalizedTarget || name.endsWith(`/${normalizedTarget}`) || name === basename) {
1012
+ return Buffer.from(tarBuffer.subarray(dataStart, dataStart + size));
1013
+ }
1014
+ offset = dataStart + dataBlocks * 512;
1015
+ }
1016
+ throw new Error(`File "${targetPath}" not found in tar archive`);
1017
+ }
1018
+
1269
1019
  // src/engine/docker.ts
1270
1020
  var exports_docker = {};
1271
1021
  __export(exports_docker, {
@@ -1874,26 +1624,6 @@ class DockerIsol8 {
1874
1624
  resolvedImage = legacyCustomTag;
1875
1625
  } catch {}
1876
1626
  }
1877
- try {
1878
- await this.docker.getImage(resolvedImage).inspect();
1879
- } catch {
1880
- logger.debug(`[ImageBuilder] Image ${resolvedImage} not found. Building...`);
1881
- const { buildBaseImages: buildBaseImages2, buildCustomImages: buildCustomImages2 } = await Promise.resolve().then(() => (init_image_builder(), exports_image_builder));
1882
- if (resolvedImage !== adapter.image && normalizedDeps.length > 0) {
1883
- try {
1884
- await this.docker.getImage(adapter.image).inspect();
1885
- } catch {
1886
- logger.debug(`[ImageBuilder] Base image ${adapter.image} missing. Building...`);
1887
- await buildBaseImages2(this.docker, undefined, false, [adapter.name]);
1888
- }
1889
- logger.debug(`[ImageBuilder] Building custom image for ${adapter.name}...`);
1890
- const dummyConfig = { dependencies: { [adapter.name]: normalizedDeps } };
1891
- await buildCustomImages2(this.docker, dummyConfig, undefined, false);
1892
- } else {
1893
- logger.debug(`[ImageBuilder] Building base image for ${adapter.name}...`);
1894
- await buildBaseImages2(this.docker, undefined, false, [adapter.name]);
1895
- }
1896
- }
1897
1627
  this.imageCache.set(cacheKey, resolvedImage);
1898
1628
  return resolvedImage;
1899
1629
  }
@@ -2715,7 +2445,7 @@ init_logger();
2715
2445
  // package.json
2716
2446
  var package_default = {
2717
2447
  name: "isol8",
2718
- version: "0.12.0-alpha.0",
2448
+ version: "0.12.0",
2719
2449
  description: "Secure code execution engine for AI agents",
2720
2450
  author: "Illusion47586",
2721
2451
  license: "MIT",
@@ -3148,4 +2878,4 @@ export {
3148
2878
  BunAdapter
3149
2879
  };
3150
2880
 
3151
- //# debugId=8EC327761CD2C45664756E2164756E21
2881
+ //# debugId=3AEBA9C5B41F55B064756E2164756E21
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../src/engine/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../src/engine/docker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/B,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,WAAW,EAEX,YAAY,EAKZ,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAuWlB,2HAA2H;AAC3H,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IACrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;YAE1C,uBAAuB;IA6BrC;;;OAGG;gBACS,OAAO,GAAE,kBAAuB,EAAE,aAAa,SAAK;IA4ChE;;;;;OAKG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCtD,kFAAkF;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgB9D;;OAEG;YACW,WAAW;IAoDzB;;OAEG;YACW,qBAAqB;IA8CnC;;OAEG;YACW,kBAAkB;IA+DhC;;;;;;;OAOG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB5C,6GAA6G;IAC7G,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED;;;OAGG;IACI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC;YAuFzD,YAAY;IA0C1B,OAAO,CAAC,UAAU;YAsBJ,gBAAgB;YAgKhB,iBAAiB;YAwIjB,aAAa;YAkBb,oBAAoB;YASpB,wBAAwB;IA4BtC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,QAAQ;YAwCD,gBAAgB;YA8EjB,iBAAiB;IAiG/B,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;;;;;;;;;;;;;;OAoBG;WACU,OAAO,CAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA0BjE;;;;;OAKG;WACU,aAAa,CACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CA2BlE"}
@@ -43,7 +43,7 @@ type ProgressCallback = (progress: BuildProgress) => void;
43
43
  * @param onProgress - Optional callback for build progress updates.
44
44
  * @param force - If true, always rebuild even if image is up to date.
45
45
  */
46
- export declare function buildBaseImages(docker: Docker, onProgress?: ProgressCallback, force?: boolean, onlyRuntimes?: string[]): Promise<void>;
46
+ export declare function buildBaseImages(docker: Docker, onProgress?: ProgressCallback, force?: boolean): Promise<void>;
47
47
  /**
48
48
  * Builds custom images with user-specified dependencies layered on top of
49
49
  * the base images. Reads package lists from the config's `dependencies` field.
@@ -1 +1 @@
1
- {"version":3,"file":"image-builder.d.ts","sourceRoot":"","sources":["../../../src/engine/image-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmE5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAK7E;AAkCD,mDAAmD;AACnD,UAAU,aAAa;IACrB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,EAC7B,KAAK,UAAQ,EACb,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBf;AAqGD;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F"}
1
+ {"version":3,"file":"image-builder.d.ts","sourceRoot":"","sources":["../../../src/engine/image-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmE5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAK7E;AAkCD,mDAAmD;AACnD,UAAU,aAAa;IACrB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,gBAAgB,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAoEf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBf;AAqGD;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isol8",
3
- "version": "0.12.0-alpha.0",
3
+ "version": "0.12.1",
4
4
  "description": "Secure code execution engine for AI agents",
5
5
  "author": "Illusion47586",
6
6
  "license": "MIT",
@@ -115,4 +115,4 @@
115
115
  "ultracite fix"
116
116
  ]
117
117
  }
118
- }
118
+ }