Published software packages: percent-encoded entrypoint paths, missing exec bits (git/jq/ripgrep), no grep command, empty duckdb archive
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 4.6k
- Forks
- 251
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 34
Description
Four defects in the published @agentos-software/* packages, found while wiring registry software into an embedded @rivet-dev/agentos-core deployment (0.2.15 and 0.2.19; package versions 0.3.3/0.3.4). Grouped here since they're all publishing/packaging; happy to split if you prefer.
1. Entrypoints export a percent-encoded path
dist/index.js in every software package does:
const packagePath = new URL("./package.aospkg", import.meta.url).pathname;
URL.pathname keeps percent-encoding, so on any install path containing spaces or non-ASCII segments (/Users/x/My Projects/…, CJK directory names) the sidecar receives a nonexistent path and AgentOs.create fails with invalid_state: package dir … has neither package.aospkg nor agentos-package.json. This also breaks defaultSoftware (via @agentos-software/common), i.e. a bare AgentOs.create() on such a path. Fix is fileURLToPath(new URL(...)). Workaround: construct { packagePath } refs manually with decoded filesystem paths.
2. git/jq/ripgrep payloads ship without exec bits
The projected binaries under /opt/agentos/pkgs/<name>/current/bin/ have mode 644, so resolution through the /opt/agentos/bin symlinks fails:
$ bash -c 'jq --version'
error: failed to execute command 'jq': Permission denied (os error 2)
$ ls -l /opt/agentos/pkgs/git/0.3.0-rc.2/bin/git # from inside the VM
-rw-r--r-- … git
Direct spawn from a guest node process still works for jq/rg (the kernel command layer intercepts), which hides the defect from some paths, but anything that resolves via PATH-in-bash is broken. (Also worth noting: the archives embed internal version 0.3.0-rc.2 while the npm wrappers say 0.3.3.)
3. grep package registers no grep
@agentos-software/grep declares only egrep and fgrep. egrep is an "obsolescent" shim that execs grep — which doesn't exist — so it fails with failed to run grep: No such file or directory (os error 44). Nothing in the registry provides plain grep.
4. duckdb archive is empty
@agentos-software/duckdb@0.3.3's dist/package.aospkg is 1.1 KB and registers zero commands (software.list() shows commands: []; duckdb is command-not-found in the VM).
Environment: embedded core (no rivetkit), darwin/arm64 and linux/arm64 (node:24-bookworm-slim), explicit software: refs with defaultSoftware: false.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the published dist/index.js entrypoint and the package publishing or archive-generation paths for the affected software packages. Inspect how git, jq, ripgrep, grep, and duckdb payloads are assembled, including executable modes and command registrations, then reproduce the stated package and VM checks. Done means paths work with encoded install locations, binaries execute through PATH, grep is registered, and duckdb lists its command.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, javascript
- Domain
- build-system, release, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100