From 6f55c6a1049849573ec61349c7f858cd95b5b53c Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Thu, 24 Sep 2026 14:02:15 -0400 Subject: [PATCH] chore(deps): bump kefka to github.com/Xe/kefka v0.2.0 Upstream v0.2.0 makes the billysh package public, registers more uutils commands (expr and others), strips and size-optimizes the embedded wasm blobs, and compiles wasm modules lazily on first use instead of at startup. objgit picks up the smaller blobs and the faster startup through the existing registry wiring; no code changes required. internal/kefkash stays a local fork rather than switching to the new public billysh: its OpenHandler permits write opens so /tmp redirections work, while upstream rejects all write opens. Update its package comment and hooks.md, which still said billysh was unexported. Assisted-by: GLM-5.3 via Conductor Signed-off-by: Xe Iaso --- docs/architecture/hooks.md | 7 ++++--- go.mod | 2 +- go.sum | 4 ++-- internal/kefkash/kefkash.go | 8 ++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/architecture/hooks.md b/docs/architecture/hooks.md index a504549..be5cc75 100644 --- a/docs/architecture/hooks.md +++ b/docs/architecture/hooks.md @@ -68,9 +68,10 @@ The sandbox filesystem is an `internal/mountfs` composite of two mounts: A write outside `/tmp` fails, and a redirect into `/src` aborts the script. -`internal/kefkash` vendors the unexported `billysh` handler wiring from kefka. -Its `OpenHandler` is adapted to permit writes, so `/tmp` redirections work. -The filesystem is what enforces the read-only `/src`. +`internal/kefkash` mirrors kefka's `billysh` handler wiring, which was +internal when it was vendored. Its `OpenHandler` is adapted to permit writes, +so `/tmp` redirections work. The filesystem is what enforces the read-only +`/src`. `internal/mountfs` also provides read-only directory handles for the WASI programs, which need to open `/` and directories below it to resolve paths. Open files report their full mounted path so WASI can stat them after open. diff --git a/go.mod b/go.mod index b2fc311..127b0a2 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.26.3 require ( github.com/Xe/erofs v0.8.0 - github.com/Xe/kefka v0.1.2 + github.com/Xe/kefka v0.2.0 github.com/aws/aws-sdk-go-v2 v1.41.7 github.com/aws/aws-sdk-go-v2/service/s3 v1.102.0 github.com/aws/smithy-go v1.26.0 diff --git a/go.sum b/go.sum index 76e76f0..ad7e44c 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/ProtonMail/go-crypto v1.4.1 h1:9RfcZHqEQUvP8RzecWEUafnZVtEvrBVL9BiF67 github.com/ProtonMail/go-crypto v1.4.1/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/Xe/erofs v0.8.0 h1:OSD900oSKFP91cM+RyCTXW0FyamjtpwA5jTGLEeyxuw= github.com/Xe/erofs v0.8.0/go.mod h1:GGxvJkCKU4yKfJ+Trap2xC8iN0HGuTUEsD5oz+olLJI= -github.com/Xe/kefka v0.1.2 h1:/kMg+glM3w01AulP20PNszIntNtoNmFd3bHsbFLICl8= -github.com/Xe/kefka v0.1.2/go.mod h1:22dif/zXQZvScR1WPA8ZERvyREtx/cScRlxNs7o55V8= +github.com/Xe/kefka v0.2.0 h1:YXfeAlwxGFvljPX6CK7gqa8XVtLK9SS+K6LGo2gklGU= +github.com/Xe/kefka v0.2.0/go.mod h1:22dif/zXQZvScR1WPA8ZERvyREtx/cScRlxNs7o55V8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= diff --git a/internal/kefkash/kefkash.go b/internal/kefkash/kefkash.go index cefe4fd..87bea9f 100644 --- a/internal/kefkash/kefkash.go +++ b/internal/kefkash/kefkash.go @@ -1,8 +1,8 @@ // Package kefkash wires a billy.Filesystem into an mvdan.cc/sh interpreter the -// way the kefka virtual shell does. The handler constructors are vendored from -// kefka's internal/billysh (github.com/Xe/kefka), which is not importable -// because it lives under internal/. They depend only on kefka's public -// command/registry package. +// way the kefka virtual shell does. The handler constructors mirror kefka's +// billysh package (github.com/Xe/kefka/billysh), which was internal when this +// package was first vendored. It stays a local fork for the deviation below; +// importing upstream billysh directly would break /tmp redirections. // // One deliberate deviation from upstream: FsysOpenHandler permits write opens // and delegates them to the filesystem's OpenFile. objgit hands the sandbox a