You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Move the standalone protocol helpers into the new `@execbox/core/protocol` entrypoint and remove the separate `@execbox/protocol` package. Transport-backed integrations should now import protocol messages, host-session helpers, and resource-pool utilities from `@execbox/core/protocol`.
Copy file name to clipboardExpand all lines: AGENTS.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
-`execbox` is a Node.js 22+ npm workspace that publishes the `@execbox/*` package family.
6
6
- 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/protocol`, `@execbox/quickjs`, `@execbox/remote`, and `@execbox/isolated-vm`.
7
+
- The workspace currently contains `@execbox/core`, `@execbox/quickjs`, `@execbox/remote`, and `@execbox/isolated-vm`.
8
8
- Keep changes aligned with existing package boundaries. Prefer changing the owning package instead of introducing cross-package shortcuts.
9
9
10
10
## Setup Commands
@@ -32,7 +32,7 @@
32
32
33
33
- For most code changes, run `npm run format:check`, `npm run lint`, `npm run typecheck`, `npm test`, and `npm run build`.
34
34
- If you change package exports, manifest fields, or published type-resolution behavior, also run `npm run package:check`.
35
-
- If you change the public API of `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, also run `npm run api:check`.
35
+
- If you change the public API of `@execbox/core`, `@execbox/core/mcp`, `@execbox/core/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, also run `npm run api:check`.
36
36
- If you change docs site content, navigation, or VitePress config, also run `npm run docs:build`.
37
37
- If you touch execution boundaries, timeout handling, abort propagation, schema validation, or log/memory controls, also run `npm run test:security`.
38
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`.
@@ -48,7 +48,7 @@
48
48
- Use Conventional Commits for git commit messages, for example `docs: add agent and contributor guides` or `fix(worker): handle timeout classification`.
49
49
- Published package releases are managed with Changesets and GitHub Actions.
50
50
- Add a `.changeset/*.md` entry when a change affects published package behavior, public APIs, or release notes for one or more `@execbox/*` packages.
51
-
- If you intentionally change a checked-in API report for `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, update it with `npm run api:update` in the same change as the code and changeset.
51
+
- If you intentionally change a checked-in API report for `@execbox/core`, `@execbox/core/mcp`, `@execbox/core/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`, update it with `npm run api:update` in the same change as the code and changeset.
52
52
- Skip a changeset for docs-only, examples-only, CI-only, or internal maintenance changes that do not affect published package behavior.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ This guide is for both humans and coding agents. Agent-specific operating instru
27
27
28
28
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.
29
29
30
-
- Public API changes to `@execbox/core`, `@execbox/core/mcp`, `@execbox/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`: run `npm run api:check`
30
+
- Public API changes to `@execbox/core`, `@execbox/core/mcp`, `@execbox/core/protocol`, `@execbox/quickjs`, `@execbox/quickjs/runner`, `@execbox/quickjs/runner/protocol-endpoint`, `@execbox/remote`, `@execbox/isolated-vm`, or `@execbox/isolated-vm/runner`: run `npm run api:check`
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.
|[`@execbox/core`](./packages/core/)|[](https://www.npmjs.com/package/@execbox/core)| Core execution contract, provider resolution, and MCP adapters |
20
-
|[`@execbox/protocol`](./packages/protocol/)|[](https://www.npmjs.com/package/@execbox/protocol)| Low-level transport messages, sessions, and resource pools |
21
-
|[`@execbox/quickjs`](./packages/quickjs/)|[](https://www.npmjs.com/package/@execbox/quickjs)| QuickJS executor for inline, worker, and process hosts |
|[`@execbox/isolated-vm`](./packages/isolated-vm/)|[](https://www.npmjs.com/package/@execbox/isolated-vm)|`isolated-vm` backend for execbox |
|[`@execbox/core`](./packages/core/)|[](https://www.npmjs.com/package/@execbox/core)| Core execution contract, provider resolution, MCP adapters, and the `@execbox/core/protocol` transport subpath |
20
+
|[`@execbox/quickjs`](./packages/quickjs/)|[](https://www.npmjs.com/package/@execbox/quickjs)| QuickJS executor for inline, worker, and process hosts |
|[`@execbox/isolated-vm`](./packages/isolated-vm/)|[](https://www.npmjs.com/package/@execbox/isolated-vm)|`isolated-vm` backend for execbox |
|`@execbox/core`| Core types, provider resolution, shared runner semantics, MCP adapters, and the `@execbox/core/protocol` transport subpath |
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 reuses the QuickJS protocol endpoint across an app-defined boundary |
48
+
|`@execbox/isolated-vm`| Alternate executor backend using a fresh `isolated-vm` context and a reusable isolated-vm runner |
50
49
51
50
## End-to-End Execution Model
52
51
@@ -101,4 +100,4 @@ Key implications:
101
100
102
101
## Architecture In One Paragraph
103
102
104
-
`@execbox/core` owns the stable execution contract, provider resolution, shared runner semantics, and MCP adapters. `@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/protocol`, which owns the transport boundary: message shapes, shared host sessions, and reusable resource pools for transport-backed execution.
103
+
`@execbox/core` owns the stable execution contract, provider resolution, shared runner semantics, MCP adapters, and the `@execbox/core/protocol` transport surface. `@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.
@@ -143,7 +143,7 @@ Every `execute()` call still creates a fresh QuickJS runtime/context, reinjects
143
143
144
144
Pooling is implemented at the host-shell layer, not at the QuickJS runtime layer.
145
145
146
-
-`@execbox/protocol` exposes a small bounded async `createResourcePool()` helper that owns reusable shells, idle eviction, and `prewarm()` / `dispose()` support.
146
+
-`@execbox/core/protocol` exposes a small bounded async `createResourcePool()` helper that owns reusable shells, idle eviction, and `prewarm()` / `dispose()` support.
147
147
- Hosted `QuickJsExecutor` pools either `ChildProcess` or `Worker` shells. Each shell owns one long-lived transport wrapper plus one attached QuickJS protocol endpoint.
148
148
- The child/worker entrypoint only attaches `attachQuickJsProtocolEndpoint(...)` once. That endpoint accepts one active `execute` message at a time and starts a fresh `runQuickJsSession()` for each message.
149
149
- Concurrency therefore comes from pool size, not from multiplexing several executions through one shell.
Copy file name to clipboardExpand all lines: docs/architecture/execbox-mcp-and-protocol.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
This page covers two related but separate parts of the execbox architecture:
4
4
5
5
- MCP adapters in `@execbox/core`
6
-
- transport-safe execution plumbing in `@execbox/protocol`
6
+
- transport-safe execution plumbing in `@execbox/core/protocol`
7
7
8
8
Use this page as the overview. For the remote execution control flow, read [execbox-remote-workflow.md](./execbox-remote-workflow.md). For the message-level protocol contract, read [execbox-protocol-reference.md](./execbox-protocol-reference.md). For the normative runner specification, read [execbox-runner-specification.md](./execbox-runner-specification.md).
9
9
@@ -39,7 +39,7 @@ flowchart LR
39
39
40
40
## Protocol Responsibilities
41
41
42
-
`@execbox/protocol` is not a sandbox runtime. It provides the transport-safe layer that lets a trusted host and a runtime exchange execution messages without sharing host closures.
42
+
`@execbox/core/protocol` is not a sandbox runtime. It provides the transport-safe layer that lets a trusted host and a runtime exchange execution messages without sharing host closures.
-`@execbox/protocol` owns wire messages, host-session lifecycle, and host-side shell pooling utilities around those semantics
54
+
-`@execbox/core/protocol` owns wire messages, host-session lifecycle, and host-side shell pooling utilities around those semantics
55
55
56
56
## How The Packages Fit Together
57
57
58
58
-`QuickJsExecutor` uses the shared runner semantics from `@execbox/core` directly.
59
59
-`IsolatedVmExecutor` uses the same core runner semantics, but keeps a direct `isolated-vm` bridge instead of transport messages.
60
-
-`QuickJsExecutor` in `host: "process"` and `host: "worker"` modes uses the shared host session from `@execbox/protocol` plus the shared QuickJS protocol endpoint inside the child or worker shell.
60
+
-`QuickJsExecutor` in `host: "process"` and `host: "worker"` modes uses the shared host session from `@execbox/core/protocol` plus the shared QuickJS protocol endpoint inside the child or worker shell.
61
61
-`RemoteExecutor` uses that same host session across an app-owned transport boundary.
62
62
- Pooled process and worker execution reuse only the outer host shell. Each `execute()` call still starts a fresh QuickJS runtime through the shared protocol endpoint.
Copy file name to clipboardExpand all lines: docs/architecture/execbox-protocol-reference.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
# Execbox Protocol Reference
1
+
# Execbox Core Protocol Reference
2
2
3
-
This page is the message-level reference for `@execbox/protocol`.
3
+
This page is the message-level reference for `@execbox/core/protocol`.
4
4
5
5
It describes the wire shapes and session semantics used by transport-backed execbox runtimes such as hosted QuickJS and remote execution. It is grounded in the shipped implementation and should be read as a practical reference, not as a formal RFC.
0 commit comments