Add guest-only workspace secrets
Add explicit workspace secrets across the CLI, SDK, and MCP, with create-time secret definitions and per-call secret-to-env mapping for exec, shell open, and service start. Persist only safe secret metadata in workspace records, materialize secret files under /run/pyro-secrets, and redact secret values from exec output, shell reads, service logs, and surfaced errors. Fix the remaining real-guest shell gap by shipping bundled guest init alongside the guest agent and patching both into guest-backed workspace rootfs images before boot. The new init mounts devpts so PTY shells work on Firecracker guests, while reset continues to recreate the sandbox and re-materialize secrets from stored task-local secret material. Validation: uv lock; UV_CACHE_DIR=.uv-cache make check; UV_CACHE_DIR=.uv-cache make dist-check; and a real guest-backed Firecracker smoke covering workspace create with secrets, secret-backed exec, shell, service, reset, and delete.
This commit is contained in:
parent
18b8fd2a7d
commit
fc72fcd3a1
32 changed files with 1980 additions and 181 deletions
|
|
@ -42,6 +42,7 @@ def _fake_runtime_paths(tmp_path: Path) -> RuntimePaths:
|
|||
firecracker_bin = bundle_root / "bin" / "firecracker"
|
||||
jailer_bin = bundle_root / "bin" / "jailer"
|
||||
guest_agent_path = bundle_root / "guest" / "pyro_guest_agent.py"
|
||||
guest_init_path = bundle_root / "guest" / "pyro-init"
|
||||
artifacts_dir = bundle_root / "profiles"
|
||||
notice_path = bundle_parent / "NOTICE"
|
||||
|
||||
|
|
@ -54,6 +55,7 @@ def _fake_runtime_paths(tmp_path: Path) -> RuntimePaths:
|
|||
firecracker_bin.write_text("firecracker\n", encoding="utf-8")
|
||||
jailer_bin.write_text("jailer\n", encoding="utf-8")
|
||||
guest_agent_path.write_text("print('guest')\n", encoding="utf-8")
|
||||
guest_init_path.write_text("#!/bin/sh\n", encoding="utf-8")
|
||||
notice_path.write_text("notice\n", encoding="utf-8")
|
||||
|
||||
return RuntimePaths(
|
||||
|
|
@ -62,6 +64,7 @@ def _fake_runtime_paths(tmp_path: Path) -> RuntimePaths:
|
|||
firecracker_bin=firecracker_bin,
|
||||
jailer_bin=jailer_bin,
|
||||
guest_agent_path=guest_agent_path,
|
||||
guest_init_path=guest_init_path,
|
||||
artifacts_dir=artifacts_dir,
|
||||
notice_path=notice_path,
|
||||
manifest={"platform": "linux-x86_64"},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue