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
6 changes: 2 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,10 @@ jobs:
- run: node scripts/check-stale-split-names.mjs
- run: node --test scripts/check-agentos-client-protocol-compat.test.mjs
- run: node scripts/check-agentos-client-protocol-compat.mjs
- run: node --test scripts/check-registry-test-runtime-boundary.test.mjs
- run: node scripts/check-registry-test-runtime-boundary.mjs
- run: node --test scripts/check-registry-software-split.test.mjs
- run: node scripts/check-registry-software-split.mjs
- run: node --test scripts/check-secure-exec-package-boundary.test.mjs
- run: node scripts/check-secure-exec-package-boundary.mjs
- run: node --test scripts/check-no-escaping-local-deps.test.mjs
- run: node scripts/check-no-escaping-local-deps.mjs
# Build the Rust crates against the pinned secure-exec. For a preview pin this
# clones secure-exec at the pinned <sha> and switches cargo to local path deps
# (crates.io has no preview track, so an unreleased crate API — e.g. a new
Expand Down
16 changes: 8 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ repository = "https://github.com/rivet-dev/agent-os"
# normal crates.io dependencies so CI/publish builds do not need a sibling
# checkout.
[workspace.dependencies]
agentos-bridge = { package = "secure-exec-bridge", path = "../secure-exec/crates/bridge", version = "0.3.0-rc.1" }
agentos-bridge = { package = "secure-exec-bridge", version = "0.3.0-rc.1" }
agentos-protocol = { path = "crates/agentos-protocol", version = "0.2.0-rc.3" }
agentos-sidecar = { path = "crates/agentos-sidecar", version = "0.2.0-rc.3" }
agentos-sidecar-browser = { path = "crates/agentos-sidecar-browser", version = "0.2.0-rc.3" }
agentos-kernel = { package = "secure-exec-kernel", path = "../secure-exec/crates/kernel", version = "0.3.0-rc.1" }
agentos-execution = { package = "secure-exec-execution", path = "../secure-exec/crates/execution", version = "0.3.0-rc.1" }
agentos-v8-runtime = { package = "secure-exec-v8-runtime", path = "../secure-exec/crates/v8-runtime", version = "0.3.0-rc.1" }
secure-exec-client = { path = "../secure-exec/crates/secure-exec-client", version = "0.3.0-rc.1" }
secure-exec-bridge = { path = "../secure-exec/crates/bridge", version = "0.3.0-rc.1" }
secure-exec-sidecar = { path = "../secure-exec/crates/sidecar", version = "0.3.0-rc.1" }
secure-exec-vm-config = { path = "../secure-exec/crates/vm-config", version = "0.3.0-rc.1" }
agentos-kernel = { package = "secure-exec-kernel", version = "0.3.0-rc.1" }
agentos-execution = { package = "secure-exec-execution", version = "0.3.0-rc.1" }
agentos-v8-runtime = { package = "secure-exec-v8-runtime", version = "0.3.0-rc.1" }
secure-exec-client = { version = "0.3.0-rc.1" }
secure-exec-bridge = { version = "0.3.0-rc.1" }
secure-exec-sidecar = { version = "0.3.0-rc.1" }
secure-exec-vm-config = { version = "0.3.0-rc.1" }
vbare = "0.0.4"
vbare-compiler = { package = "rivet-vbare-compiler", version = "0.0.5" }
18 changes: 11 additions & 7 deletions crates/agentos-actor-plugin/src/actions/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,8 @@ fn spawn_event_capture(
// only written to SQLite and never reached live subscribers, so
// `sessionEvent` streaming silently delivered nothing.
let mut cbor = Vec::new();
if ciborium::into_writer(
&serde_json::json!([{ "event": event_value }]),
&mut cbor,
)
.is_ok()
if ciborium::into_writer(&serde_json::json!([{ "event": event_value }]), &mut cbor)
.is_ok()
{
let _ = ctx.broadcast(b"sessionEvent".to_vec(), cbor);
}
Expand Down Expand Up @@ -193,7 +190,11 @@ fn spawn_permission_pump(
let (mut stream, subscription) = match vm.on_permission_request(live_session_id) {
Ok(sub) => sub,
Err(error) => {
tracing::warn!(?error, live_session_id, "on_permission_request subscribe failed");
tracing::warn!(
?error,
live_session_id,
"on_permission_request subscribe failed"
);
return;
}
};
Expand Down Expand Up @@ -545,7 +546,10 @@ mod tests {

#[test]
fn parse_permission_reply_maps_each_wire_value() {
assert_eq!(parse_permission_reply("once").unwrap(), PermissionReply::Once);
assert_eq!(
parse_permission_reply("once").unwrap(),
PermissionReply::Once
);
assert_eq!(
parse_permission_reply("always").unwrap(),
PermissionReply::Always
Expand Down
1 change: 0 additions & 1 deletion crates/agentos-actor-plugin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ mod persistence_e2e;

use std::sync::Arc;


/// Process-global plugin state created once per `dlopen` (spec §5.2): the
/// plugin's own tokio runtime (`enable_all` — the time driver is required by
/// agentos-client hot paths).
Expand Down
10 changes: 9 additions & 1 deletion crates/agentos-sidecar/src/acp_extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1362,6 +1362,7 @@ fn deliver_event(
Ok(())
}

#[allow(clippy::too_many_arguments)]
async fn send_json_rpc_request(
ctx: &mut ExtensionContext<'_>,
process_id: &str,
Expand Down Expand Up @@ -1536,7 +1537,14 @@ async fn send_json_rpc_request(
// Embed ADAPTER_EXITED_ERROR_MARKER directly so is_adapter_exited_error()
// stays coupled to this producer: changing the wording can't silently
// disable session eviction (the H4 leak fix) without touching the const.
let stderr_tail: String = adapter_stderr.chars().rev().take(4000).collect::<String>().chars().rev().collect();
let stderr_tail: String = adapter_stderr
.chars()
.rev()
.take(4000)
.collect::<String>()
.chars()
.rev()
.collect();
return Err(SidecarError::InvalidState(format!(
"ACP adapter process {process_id} {ADAPTER_EXITED_ERROR_MARKER} {} before response id={response_id}; recent_activity={:?}; adapter_stderr={:?}",
exited.exit_code, recent_activity, stderr_tail
Expand Down
4 changes: 4 additions & 0 deletions crates/client/src/agent_os.rs
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ impl AgentOs {
| wire::ResponsePayload::PersistenceStateResponse(_)
| wire::ResponsePayload::PersistenceFlushedResponse(_)
| wire::ResponsePayload::VmFetchResponse(_)
| wire::ResponsePayload::PtyResizedResponse(_)
| wire::ResponsePayload::ExtEnvelope(_) => {
return Err(ClientError::Sidecar(
"unexpected open_session response".to_string(),
Expand Down Expand Up @@ -340,6 +341,7 @@ impl AgentOs {
| wire::ResponsePayload::PersistenceStateResponse(_)
| wire::ResponsePayload::PersistenceFlushedResponse(_)
| wire::ResponsePayload::VmFetchResponse(_)
| wire::ResponsePayload::PtyResizedResponse(_)
| wire::ResponsePayload::ExtEnvelope(_) => {
return Err(ClientError::Sidecar(
"unexpected create_vm response".to_string(),
Expand Down Expand Up @@ -415,6 +417,7 @@ impl AgentOs {
| wire::ResponsePayload::PersistenceStateResponse(_)
| wire::ResponsePayload::PersistenceFlushedResponse(_)
| wire::ResponsePayload::VmFetchResponse(_)
| wire::ResponsePayload::PtyResizedResponse(_)
| wire::ResponsePayload::ExtEnvelope(_) => {
return Err(ClientError::Sidecar(
"unexpected configure_vm response".to_string(),
Expand Down Expand Up @@ -490,6 +493,7 @@ impl AgentOs {
| wire::ResponsePayload::PersistenceStateResponse(_)
| wire::ResponsePayload::PersistenceFlushedResponse(_)
| wire::ResponsePayload::VmFetchResponse(_)
| wire::ResponsePayload::PtyResizedResponse(_)
| wire::ResponsePayload::ExtEnvelope(_) => {
return Err(ClientError::Sidecar(
"unexpected register_host_callbacks response".to_string(),
Expand Down
10 changes: 5 additions & 5 deletions examples/quickstart/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
"sandbox-agent": "^0.4.2",
"dockerode": "^4.0.9",
"get-port": "^7.1.0",
"@agentos-software/git": "link:../../../secure-exec/registry/software/git",
"@agentos-software/claude-code": "link:../../../secure-exec/registry/agent/claude",
"@agentos-software/opencode": "link:../../../secure-exec/registry/agent/opencode",
"@agentos-software/pi": "link:../../../secure-exec/registry/agent/pi",
"@secure-exec/s3": "link:../../../secure-exec/registry/file-system/s3",
"@agentos-software/git": "catalog:",
"@agentos-software/claude-code": "catalog:",
"@agentos-software/opencode": "catalog:",
"@agentos-software/pi": "catalog:",
"@secure-exec/s3": "catalog:",
"zod": "^4.1.11"
},
"devDependencies": {
Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
"@copilotkit/llmock": "^1.6.0",
"@mariozechner/pi-coding-agent": "^0.60.0",
"@rivet-dev/agentos-core": "workspace:*",
"@agentos-software/claude-code": "link:../secure-exec/registry/agent/claude",
"@agentos-software/codex": "link:../secure-exec/registry/agent/codex",
"@agentos-software/common": "link:../secure-exec/registry/software/common",
"@secure-exec/core": "link:../secure-exec/packages/core",
"@agentos-software/pi": "link:../secure-exec/registry/agent/pi",
"@agentos-software/claude-code": "catalog:",
"@agentos-software/codex": "catalog:",
"@agentos-software/common": "catalog:",
"@secure-exec/core": "catalog:",
"@agentos-software/pi": "catalog:",
"@types/node": "^22.19.15",
"jszip": "^3.10.1",
"pdf-lib": "^1.17.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/agentos-sandbox/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
},
"dependencies": {
"@rivet-dev/agentos-core": "workspace:*",
"@secure-exec/sandbox": "link:../../../secure-exec/registry/tool/sandbox",
"@secure-exec/sandbox": "catalog:",
"sandbox-agent": "^0.4.2",
"zod": "^4.1.11"
},
"devDependencies": {
"@agentos-software/common": "link:../../../secure-exec/registry/software/common",
"@agentos-software/common": "catalog:",
"@types/node": "^22.10.2",
"typescript": "^5.7.2",
"vitest": "^2.1.8"
Expand Down
2 changes: 1 addition & 1 deletion packages/agentos/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"test": "vitest run"
},
"dependencies": {
"@agentos-software/common": "link:../../../secure-exec/registry/software/common",
"@agentos-software/common": "catalog:",
"@rivet-dev/agentos-core": "workspace:*",
"@rivet-dev/agentos-sidecar": "workspace:*",
"@rivetkit/react": "0.0.0-feat-dylib-actor-plugin.c44621f",
Expand Down
52 changes: 26 additions & 26 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@
"test": "vitest run --reporter=verbose"
},
"dependencies": {
"@agentos-software/common": "link:../../../secure-exec/registry/software/common",
"@agentos-software/common": "catalog:",
"@aws-sdk/client-s3": "^3.1019.0",
"@rivet-dev/agentos-sidecar": "workspace:*",
"@rivetkit/bare-ts": "^0.6.2",
"@secure-exec/core": "link:../../../secure-exec/packages/core",
"@secure-exec/core": "catalog:",
"@xterm/headless": "^6.0.0",
"better-sqlite3": "^12.8.0",
"croner": "^10.0.1",
Expand All @@ -77,31 +77,31 @@
"@bare-ts/tools": "0.15.0",
"@copilotkit/llmock": "^1.6.0",
"@rivet-dev/agentos-sandbox": "link:../agentos-sandbox",
"@agentos-software/git": "link:../../../secure-exec/registry/software/git",
"@secure-exec/google-drive": "link:../../../secure-exec/registry/file-system/google-drive",
"@secure-exec/s3": "link:../../../secure-exec/registry/file-system/s3",
"@agentos-software/git": "catalog:",
"@secure-exec/google-drive": "catalog:",
"@secure-exec/s3": "catalog:",
"@mariozechner/pi-coding-agent": "^0.60.0",
"@agentos-software/claude-code": "link:../../../secure-exec/registry/agent/claude",
"@agentos-software/codex-cli": "link:../../../secure-exec/registry/software/codex",
"@agentos-software/codex": "link:../../../secure-exec/registry/agent/codex",
"@agentos-software/coreutils": "link:../../../secure-exec/registry/software/coreutils",
"@agentos-software/curl": "link:../../../secure-exec/registry/software/curl",
"@agentos-software/diffutils": "link:../../../secure-exec/registry/software/diffutils",
"@agentos-software/fd": "link:../../../secure-exec/registry/software/fd",
"@agentos-software/file": "link:../../../secure-exec/registry/software/file",
"@agentos-software/findutils": "link:../../../secure-exec/registry/software/findutils",
"@agentos-software/gawk": "link:../../../secure-exec/registry/software/gawk",
"@agentos-software/grep": "link:../../../secure-exec/registry/software/grep",
"@agentos-software/gzip": "link:../../../secure-exec/registry/software/gzip",
"@agentos-software/jq": "link:../../../secure-exec/registry/software/jq",
"@agentos-software/opencode": "link:../../../secure-exec/registry/agent/opencode",
"@agentos-software/pi": "link:../../../secure-exec/registry/agent/pi",
"@agentos-software/pi-cli": "link:../../../secure-exec/registry/agent/pi-cli",
"@agentos-software/ripgrep": "link:../../../secure-exec/registry/software/ripgrep",
"@agentos-software/sed": "link:../../../secure-exec/registry/software/sed",
"@agentos-software/tar": "link:../../../secure-exec/registry/software/tar",
"@agentos-software/tree": "link:../../../secure-exec/registry/software/tree",
"@agentos-software/yq": "link:../../../secure-exec/registry/software/yq",
"@agentos-software/claude-code": "catalog:",
"@agentos-software/codex-cli": "catalog:",
"@agentos-software/codex": "catalog:",
"@agentos-software/coreutils": "catalog:",
"@agentos-software/curl": "catalog:",
"@agentos-software/diffutils": "catalog:",
"@agentos-software/fd": "catalog:",
"@agentos-software/file": "catalog:",
"@agentos-software/findutils": "catalog:",
"@agentos-software/gawk": "catalog:",
"@agentos-software/grep": "catalog:",
"@agentos-software/gzip": "catalog:",
"@agentos-software/jq": "catalog:",
"@agentos-software/opencode": "catalog:",
"@agentos-software/pi": "catalog:",
"@agentos-software/pi-cli": "catalog:",
"@agentos-software/ripgrep": "catalog:",
"@agentos-software/sed": "catalog:",
"@agentos-software/tar": "catalog:",
"@agentos-software/tree": "catalog:",
"@agentos-software/yq": "catalog:",
"@types/node": "^22.10.2",
"pi-acp": "^0.0.23",
"sandbox-agent": "^0.4.2",
Expand Down
11 changes: 5 additions & 6 deletions packages/core/tests/brush-interactive.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,16 @@ async function waitFor(term: Terminal, text: string, timeoutMs = 20000): Promise
throw new Error(`timeout waiting for ${JSON.stringify(text)}\n${snapshot("timeout", term)}`);
}

describe("brush interactive PTY repaint", () => {
// Requires the `sh` wasm command built locally (`make` in
// ../secure-exec/registry/native). CI consumes published @agentos-software
// packages and does not build wasm commands, so skip when the artifact is absent
// rather than failing the suite.
describe.skipIf(!existsSync(REGISTRY_SH))("brush interactive PTY repaint", () => {
let vm: AgentOs | undefined;
let term: Terminal | undefined;
let shellId: string | undefined;

beforeAll(() => {
if (!existsSync(REGISTRY_SH)) {
throw new Error(
`registry sh wasm not built at ${REGISTRY_SH}; run 'make' in ../secure-exec/registry/native`,
);
}
fixtureDir = mkdtempSync(join(tmpdir(), "brush-fixture-"));
copyFileSync(REGISTRY_SH, join(fixtureDir, FIXTURE_COMMAND));
process.env.AGENTOS_SIDECAR_BIN = SIDECAR_BINARY;
Expand Down
5 changes: 4 additions & 1 deletion packages/core/tests/session-update-live.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@ function isSessionUpdate(event: TimedEvent): boolean {
}

describe("REPRO: Pi session/update live delivery", () => {
test("session/update events stream live mid-turn, not batched at prompt resolution", async () => {
// Known-failing repro for the RivetKit native-plugin liveness bug: session/update
// events are batched until session/prompt resolves instead of streaming live. The
// fix lives in RivetKit and needs a republish; un-skip once that lands.
test.skip("session/update events stream live mid-turn, not batched at prompt resolution", async () => {
const workspacePath = "/home/agentos/workspace/tool-verify.txt";
const expectedToolResult = "Successfully wrote";
const finalText = "tool-verify.txt was created successfully.";
Expand Down
2 changes: 1 addition & 1 deletion packages/posix/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
},
"license": "Apache-2.0",
"dependencies": {
"@secure-exec/core": "link:../../../secure-exec/packages/core"
"@secure-exec/core": "catalog:"
},
"devDependencies": {
"@types/node": "^22.10.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"test": "pnpm build && vitest run --fileParallelism=false"
},
"dependencies": {
"@secure-exec/core": "link:../../../secure-exec/packages/core",
"@secure-exec/core": "catalog:",
"pyodide": "^0.28.3"
},
"peerDependencies": {
Expand Down
45 changes: 21 additions & 24 deletions packages/shell/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,30 +15,27 @@
},
"dependencies": {
"@rivet-dev/agentos-core": "workspace:*",
"@agentos-software/codex-cli": "link:../../../secure-exec/registry/software/codex",
"@agentos-software/coreutils": "link:../../../secure-exec/registry/software/coreutils",
"@agentos-software/curl": "link:../../../secure-exec/registry/software/curl",
"@agentos-software/diffutils": "link:../../../secure-exec/registry/software/diffutils",
"@agentos-software/duckdb": "link:../../../secure-exec/registry/software/duckdb",
"@agentos-software/fd": "link:../../../secure-exec/registry/software/fd",
"@agentos-software/file": "link:../../../secure-exec/registry/software/file",
"@agentos-software/findutils": "link:../../../secure-exec/registry/software/findutils",
"@agentos-software/gawk": "link:../../../secure-exec/registry/software/gawk",
"@agentos-software/git": "link:../../../secure-exec/registry/software/git",
"@agentos-software/grep": "link:../../../secure-exec/registry/software/grep",
"@agentos-software/gzip": "link:../../../secure-exec/registry/software/gzip",
"@agentos-software/http-get": "link:../../../secure-exec/registry/software/http-get",
"@agentos-software/jq": "link:../../../secure-exec/registry/software/jq",
"@agentos-software/make": "link:../../../secure-exec/registry/software/make",
"@agentos-software/ripgrep": "link:../../../secure-exec/registry/software/ripgrep",
"@agentos-software/sed": "link:../../../secure-exec/registry/software/sed",
"@agentos-software/sqlite3": "link:../../../secure-exec/registry/software/sqlite3",
"@agentos-software/tar": "link:../../../secure-exec/registry/software/tar",
"@agentos-software/tree": "link:../../../secure-exec/registry/software/tree",
"@agentos-software/unzip": "link:../../../secure-exec/registry/software/unzip",
"@agentos-software/wget": "link:../../../secure-exec/registry/software/wget",
"@agentos-software/yq": "link:../../../secure-exec/registry/software/yq",
"@agentos-software/zip": "link:../../../secure-exec/registry/software/zip",
"@agentos-software/codex-cli": "catalog:",
"@agentos-software/coreutils": "catalog:",
"@agentos-software/curl": "catalog:",
"@agentos-software/diffutils": "catalog:",
"@agentos-software/fd": "catalog:",
"@agentos-software/file": "catalog:",
"@agentos-software/findutils": "catalog:",
"@agentos-software/gawk": "catalog:",
"@agentos-software/git": "catalog:",
"@agentos-software/grep": "catalog:",
"@agentos-software/gzip": "catalog:",
"@agentos-software/http-get": "catalog:",
"@agentos-software/jq": "catalog:",
"@agentos-software/ripgrep": "catalog:",
"@agentos-software/sed": "catalog:",
"@agentos-software/sqlite3": "catalog:",
"@agentos-software/tar": "catalog:",
"@agentos-software/tree": "catalog:",
"@agentos-software/unzip": "catalog:",
"@agentos-software/yq": "catalog:",
"@agentos-software/zip": "catalog:",
"commander": "^14.0.2"
},
"devDependencies": {
Expand Down
Loading
Loading