Skip to content

Commit 364e6c4

Browse files
authored
refactor!: drop isolated-vm package (#32)
1 parent 7f5e539 commit 364e6c4

40 files changed

Lines changed: 69 additions & 1543 deletions

.github/workflows/ci.yml

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,6 @@ jobs:
6161
- name: Run security-focused tests
6262
run: npm run test:security
6363

64-
isolated-vm-security:
65-
runs-on: ubuntu-latest
66-
67-
steps:
68-
- uses: actions/checkout@v4
69-
70-
- name: Use Node.js 24
71-
uses: actions/setup-node@v4
72-
with:
73-
node-version: 24
74-
cache: npm
75-
76-
- name: Install dependencies
77-
run: npm ci
78-
79-
- name: Run isolated-vm security lane
80-
run: npm run test:isolated-vm
81-
8264
docs:
8365
runs-on: ubuntu-latest
8466

AGENTS.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
- `execbox` is a Node.js 22+ npm workspace that publishes the `@execbox/*` package family.
66
- Core source lives under `packages/*/src`, tests live under `packages/*/__tests__`, runnable examples live under `examples/`, and the public docs site lives under `docs/`.
7-
- The workspace currently contains `@execbox/core`, `@execbox/quickjs`, `@execbox/remote`, and `@execbox/isolated-vm`.
7+
- The workspace currently contains `@execbox/core`, `@execbox/quickjs`, and `@execbox/remote`.
88
- Keep changes aligned with existing package boundaries. Prefer changing the owning package instead of introducing cross-package shortcuts.
99

1010
## Setup Commands
@@ -17,8 +17,6 @@
1717
- Validate published package metadata and type resolution: `npm run package:check`
1818
- Build docs site: `npm run docs:build`
1919
- Run security-focused suites: `npm run test:security`
20-
- Run isolated-vm tests only when needed: `npm run test:isolated-vm`
21-
- Run the full isolated-vm verification lane: `npm run verify:isolated-vm`
2220

2321
## Codebase Conventions
2422

@@ -35,7 +33,6 @@
3533
- If you change the public API of any entrypoint listed in `scripts/workspace-entrypoints.ts`, including `@execbox/core/runtime` and `@execbox/quickjs/remote-endpoint`, also run `npm run api:check`.
3634
- If you change docs site content, navigation, or VitePress config, also run `npm run docs:build`.
3735
- If you touch execution boundaries, timeout handling, abort propagation, schema validation, or log/memory controls, also run `npm run test:security`.
38-
- If you touch `@execbox/isolated-vm` or codepaths guarded by `VITEST_INCLUDE_ISOLATED_VM`, run `npm run test:isolated-vm` or `npm run verify:isolated-vm`.
3936

4037
## Security Notes
4138

CONTRIBUTING.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ This guide is for both humans and coding agents. Agent-specific operating instru
2323
- Package export, manifest, or published type-resolution changes: `npm run package:check`
2424
- Docs site changes: `npm run docs:build`
2525
- Security or execution-boundary changes: `npm run test:security`
26-
- `@execbox/isolated-vm` changes: `npm run test:isolated-vm` or `npm run verify:isolated-vm`
2726

2827
Choose the smallest verification set that covers your change, and include the commands you ran in your PR or handoff notes when the context would help reviewers.
2928

README.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,19 @@ Portable code execution for [Model Context Protocol](https://modelcontextprotoco
66

77
[![License](https://img.shields.io/github/license/aallam/execbox?style=flat-square)](https://github.com/aallam/execbox/blob/main/LICENSE)
88
[![Docs](https://img.shields.io/badge/docs-site-0ea5e9?style=flat-square)](https://execbox.aallam.com)
9-
[![Packages](https://img.shields.io/badge/packages-4-111827?style=flat-square)](#package-map)
9+
[![Packages](https://img.shields.io/badge/packages-3-111827?style=flat-square)](#package-map)
1010

1111
</div>
1212

1313
Execbox turns host tool catalogs into callable guest namespaces, supports MCP wrapping on both sides of the boundary, and lets you place guest JavaScript where it fits your deployment: inline, behind a worker or child-process host, or across your own remote transport.
1414

1515
## Package Map
1616

17-
| Package | npm | What it is for |
18-
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
19-
| [`@execbox/core`](./packages/core/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fcore?style=flat-square)](https://www.npmjs.com/package/@execbox/core) | Core execution contract, provider resolution, MCP adapters, and runtime/protocol subpaths |
20-
| [`@execbox/quickjs`](./packages/quickjs/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fquickjs?style=flat-square)](https://www.npmjs.com/package/@execbox/quickjs) | QuickJS executor for inline, worker, and process hosts |
21-
| [`@execbox/remote`](./packages/remote/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fremote?style=flat-square)](https://www.npmjs.com/package/@execbox/remote) | Transport-backed remote executor |
22-
| [`@execbox/isolated-vm`](./packages/isolated-vm/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fisolated-vm?style=flat-square)](https://www.npmjs.com/package/@execbox/isolated-vm) | `isolated-vm` backend for execbox |
17+
| Package | npm | What it is for |
18+
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
19+
| [`@execbox/core`](./packages/core/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fcore?style=flat-square)](https://www.npmjs.com/package/@execbox/core) | Core execution contract, provider resolution, MCP adapters, and runtime/protocol subpaths |
20+
| [`@execbox/quickjs`](./packages/quickjs/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fquickjs?style=flat-square)](https://www.npmjs.com/package/@execbox/quickjs) | QuickJS executor for inline, worker, and process hosts |
21+
| [`@execbox/remote`](./packages/remote/) | [![npm](https://img.shields.io/npm/v/%40execbox%2Fremote?style=flat-square)](https://www.npmjs.com/package/@execbox/remote) | Advanced transport-backed executor for app-owned runtime boundaries |
2322

2423
## Examples
2524

benchmarks/results.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,3 @@ This suite only measures the parent Node process. It does not attempt to attribu
154154
- It does not prove exact throughput rankings for every workload or host. The concurrency and tool-call suites are still sensitive to local scheduler noise.
155155
- It does not prove memory behavior for `QuickJsExecutor({ host: "process" })`, because the memory suite intentionally avoids reporting child-process RSS as if it were host-process memory.
156156
- It does not measure `RemoteExecutor`, because remote performance depends on the caller-owned transport and remote runtime deployment.
157-
- It does not measure `IsolatedVmExecutor`, which has a separate native/runtime verification lane.

docs/architecture/README.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This Concepts section is for two audiences:
1111

1212
- Start here for the package map, trust model, and overall flow.
1313
- Read [execbox-core.md](./execbox-core.md) for provider resolution, execution contracts, and error handling.
14-
- Read [execbox-executors.md](./execbox-executors.md) for QuickJS host modes, remote execution, and `isolated-vm` trade-offs.
14+
- Read [execbox-executors.md](./execbox-executors.md) for QuickJS host modes and remote execution trade-offs.
1515
- Read [execbox-mcp-and-protocol.md](./execbox-mcp-and-protocol.md) for MCP wrapping and where `@execbox/core/protocol` fits.
1616
- Read [execbox-remote-workflow.md](./execbox-remote-workflow.md) for the end-to-end remote execution control flow.
1717
- Read [execbox-protocol-reference.md](./execbox-protocol-reference.md) for the protocol message catalog and session rules.
@@ -27,27 +27,24 @@ flowchart LR
2727
CORE["@execbox/core<br/>provider resolution + MCP adapters + runtime helpers"]
2828
QJS["@execbox/quickjs<br/>QuickJS executor + reusable runner"]
2929
REM["@execbox/remote<br/>transport-backed remote executor"]
30-
IVM["@execbox/isolated-vm<br/>in-process isolated-vm executor + reusable runner"]
3130
PROTO["@execbox/core/protocol<br/>transport messages + shared host session"]
3231
MCP["MCP sources and wrapped servers"]
3332
3433
APP --> CORE
3534
APP --> QJS
3635
APP --> REM
37-
APP --> IVM
3836
CORE --> MCP
3937
QJS --> PROTO
4038
REM --> PROTO
4139
```
4240

4341
### Package Roles
4442

45-
| Package | Role |
46-
| ---------------------- | ------------------------------------------------------------------------------------------------------------ |
47-
| `@execbox/core` | App-facing core types, provider resolution, MCP adapters, plus runtime and protocol subpaths |
48-
| `@execbox/quickjs` | Default QuickJS executor package with inline, worker-hosted, and process-hosted modes plus a reusable runner |
49-
| `@execbox/remote` | Transport-backed executor that runs against an app-defined runner boundary |
50-
| `@execbox/isolated-vm` | Alternate executor backend using a fresh `isolated-vm` context and a reusable isolated-vm runner |
43+
| Package | Role |
44+
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
45+
| `@execbox/core` | App-facing core types, provider resolution, MCP adapters, plus runtime and protocol subpaths |
46+
| `@execbox/quickjs` | Default QuickJS executor package with inline, worker-hosted, and process-hosted modes plus a reusable runner |
47+
| `@execbox/remote` | Transport-backed executor that runs against an app-defined runner boundary |
5148

5249
## End-to-End Execution Model
5350

@@ -102,4 +99,4 @@ Key implications:
10299

103100
## Architecture In One Paragraph
104101

105-
`@execbox/core` owns the app-facing execution contract, provider resolution, MCP adapters, and the `@execbox/core/protocol` transport surface. Runtime implementers use `@execbox/core/runtime` for shared dispatch, manifest, timeout, log, and normalization helpers. `@execbox/quickjs` and `@execbox/isolated-vm` each expose a runtime-specific reusable runner. Hosted `@execbox/quickjs` modes and `@execbox/remote` sit on top of `@execbox/core/protocol`, which owns the transport boundary: message shapes, shared host sessions, and reusable resource pools for transport-backed execution.
102+
`@execbox/core` owns the app-facing execution contract, provider resolution, MCP adapters, and the `@execbox/core/protocol` transport surface. Runtime implementers use `@execbox/core/runtime` for shared dispatch, manifest, timeout, log, and normalization helpers. `@execbox/quickjs` exposes the default runtime-specific reusable runner. Hosted `@execbox/quickjs` modes and `@execbox/remote` sit on top of `@execbox/core/protocol`, which owns the transport boundary: message shapes, shared host sessions, and reusable resource pools for transport-backed execution.

docs/architecture/execbox-core.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ sequenceDiagram
106106
This seam is what lets execbox share semantics across:
107107

108108
- the in-process QuickJS executor
109-
- the in-process `isolated-vm` executor
110109
- transport-backed executors that reuse the same manifest and dispatcher model through `@execbox/core/protocol`
111110

112111
without forcing every runtime through the same transport implementation.
@@ -190,7 +189,7 @@ Executors are responsible for their own runtime-specific classification rules, b
190189

191190
## Why the Core Stays Small
192191

193-
The core package does not own QuickJS, `isolated-vm`, worker threads, or transport mechanics. That separation keeps the core useful for:
192+
The core package does not own QuickJS, worker threads, child processes, or transport mechanics. That separation keeps the core useful for:
194193

195194
- direct in-process runtimes
196195
- worker-backed runtimes

0 commit comments

Comments
 (0)