Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .agents/skills/release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ not satisfy these gates.

```sh
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 \
cargo test --locked -p interpreter --test determinism -- --nocapture
cargo test --locked -p submilli-engine --test determinism -- --nocapture
```

`SUBMILLI_FULL_TEST` does not enable determinism. Require successful execution
Expand Down Expand Up @@ -157,7 +157,7 @@ not satisfy these gates.

```sh
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 \
cargo test --locked -p interpreter --test type_limits -- --nocapture
cargo test --locked -p submilli-engine --test type_limits -- --nocapture
```

Require all test bodies to execute successfully. Record the candidate and
Expand All @@ -166,7 +166,7 @@ not satisfy these gates.

```sh
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 \
cargo test --locked -p interpreter --test git_memory -- --nocapture
cargo test --locked -p submilli-engine --test git_memory -- --nocapture
```

Require both memory-limit test bodies to execute successfully. The optional
Expand All @@ -176,7 +176,7 @@ not satisfy these gates.

```sh
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 \
cargo test --locked -p interpreter --test host_memory -- --nocapture
cargo test --locked -p submilli-engine --test host_memory -- --nocapture
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 \
cargo test --locked -p submilli-server --test memory_cap -- --nocapture
```
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ jobs:
- name: Clippy (gate)
run: cargo clippy --workspace --all-targets -- -D warnings

# The engine is published to crates.io. Packaging builds it from the
# packaged files alone, so a source file left out of the package fails
# here rather than at release.
- name: Package for crates.io
run: cargo publish --dry-run --locked -p submilli-engine

# The fixture harness defaults to a smoke subset (196 of 1054) for fast local
# iteration. CI has no such constraint — the full sweep is a few seconds — and
# the subset keeps one fixture per top-level directory, so whole trees never run.
Expand Down Expand Up @@ -87,7 +93,7 @@ jobs:
- uses: Swatinem/rust-cache@v2

- name: VFS containment suite
run: cargo test -p interpreter --test vfs_containment
run: cargo test -p submilli-engine --test vfs_containment

- name: Skill installation across platforms
run: cargo test -p submilli --test skill --test upgrade
Expand All @@ -108,7 +114,7 @@ jobs:
# Unicode aliases, and identity read through a handle on Windows.
- name: VFS mounts
run: >-
cargo test -p interpreter --lib --
cargo test -p submilli-engine --lib --
stdlib::fs::tests::mount stdlib::git::integration_tests::mount

# The size limit keys files by device and inode, which Windows reports only
Expand All @@ -118,7 +124,7 @@ jobs:
# writers hold open.
- name: VFS size limit
run: >-
cargo test -p interpreter --lib --
cargo test -p submilli-engine --lib --
runtime::vfs::tests::size_limit runtime::vfs::tests::measuring runtime::vfs::tests::a_tree
stdlib::fs::tests::size_limit stdlib::fs::tests::a_ stdlib::fs::tests::copying_
stdlib::fs::tests::rewriting_ stdlib::code::tests::edits_are_counted
8 changes: 4 additions & 4 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ jobs:
run: cargo test --locked -p conformance --test typescript -- --nocapture
- name: Compiler determinism
if: ${{ !cancelled() }}
run: cargo test --locked -p interpreter --test determinism -- --nocapture
run: cargo test --locked -p submilli-engine --test determinism -- --nocapture
- name: Compiler type limits
if: ${{ !cancelled() }}
run: cargo test --locked -p interpreter --test type_limits -- --nocapture
run: cargo test --locked -p submilli-engine --test type_limits -- --nocapture
- name: Git memory limits
if: ${{ !cancelled() }}
run: cargo test --locked -p interpreter --test git_memory -- --nocapture
run: cargo test --locked -p submilli-engine --test git_memory -- --nocapture
- name: Host memory bounds
if: ${{ !cancelled() }}
run: cargo test --locked -p interpreter --test host_memory -- --nocapture
run: cargo test --locked -p submilli-engine --test host_memory -- --nocapture
- name: Server memory caps
if: ${{ !cancelled() }}
run: cargo test --locked -p submilli-server --test memory_cap -- --nocapture
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ Whenever modifying the Git standard library (`crates/interpreter/src/stdlib/git/
run the Git memory-limit tests in addition to other affected checks:

```sh
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_FULL_TEST=0 SUBMILLI_TEST_NIGHTLY_ONLY=1 cargo test --locked -p interpreter --test git_memory -- --nocapture
SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_FULL_TEST=0 SUBMILLI_TEST_NIGHTLY_ONLY=1 cargo test --locked -p submilli-engine --test git_memory -- --nocapture
```

These tests use an in-process HTTP transport backed by local `git upload-pack`,
Expand Down Expand Up @@ -371,7 +371,7 @@ modes with synthetic package tests and a focused localhost test; contact real
APIs only when their integration behavior is affected.

Select the affected crate/test or package rather than all network integrations,
for example `SUBMILLI_SKIP_HTTP_TESTS=0 cargo test -p interpreter --test http_live`
for example `SUBMILLI_SKIP_HTTP_TESTS=0 cargo test -p submilli-engine --test http_live`
or `cargo run -p submilli -- build test -p @submilli/jina --env-var JINA_API_KEY`.
These tests may require execution outside the sandbox, even for local listeners.
Request network access only for selected checks that require it. Record why HTTP
Expand Down
112 changes: 56 additions & 56 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/conformance/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ publish.workspace = true
workspace = true

[dev-dependencies]
interpreter = { path = "../interpreter" }
interpreter = { package = "submilli-engine", path = "../interpreter" }
tokio = { workspace = true, features = ["rt"] }
wasmtime = { workspace = true }
10 changes: 8 additions & 2 deletions crates/interpreter/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
[package]
name = "interpreter"
name = "submilli-engine"
description = "Compiles Submilli programs, a TypeScript subset, to WebAssembly and runs them under capability policy"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
publish.workspace = true
readme = "README.md"
keywords = ["submilli", "typescript", "webassembly", "sandbox", "agents"]
categories = ["compilers", "wasm"]
publish = true
# Tests and their snapshots stay in the repository; the package is the library.
exclude = ["tests/**", "**/snapshots/**"]

[lints]
workspace = true
Expand Down
12 changes: 12 additions & 0 deletions crates/interpreter/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# submilli-engine

The engine behind [Submilli](https://github.com/submilli/submilli-runtime): it
compiles Submilli programs, a subset of TypeScript, to WebAssembly and runs
them in a sandbox where every effect goes through a capability check.

An embedder chooses the standard library its programs see with `Stdlib`, and
supplies the host services through traits on the store: the policy
(`SecurityCheck`), HTTP, secrets, model calls (`LlmProvider`), sub-agents
(`AgentProvider`) and skills (`SkillProvider`), among others.

Licensed under Apache-2.0.
Loading
Loading