Skip to content

test: run CI for Codex code-mode helper fix - #1

Open
fdobrovolny wants to merge 5 commits into
mainfrom
fix/codex-code-mode-host-path
Open

fdobrovolny wants to merge 5 commits into
mainfrom
fix/codex-code-mode-host-path

Conversation

@fdobrovolny

Copy link
Copy Markdown
Owner

Expose the standalone Codex code-mode helper alongside the CLI and preserve its link to the active release across upgrades. Create the test fixture directories before writing mock binaries.

This PR runs CI in the fork for upstream PR coder#1155.

Validation: all 13 module Terraform tests, Terraform validation, formatting, and a separate local symlink/upgrade check passed. The Docker test could not run locally because the workspace blocks container filesystem mounts.

Generated with Codex using GPT-6.

matifali and others added 5 commits September 29, 2026 14:06
## Summary
- GitHub does not emit push events for tag refs when more than 3 are
pushed in a single call — any batch push of >3 release tags silently
never triggers `release.yml` or `deploy-registry.yaml`.
- Hit this for real releasing PR coder#1127's version bumps: pushed 13 then 4
release tags, both pushes succeeded on the remote, but zero release
workflow runs fired for any of them. Had to manually delete + re-push
all 17 in batches of 3 to get the releases created.
- `scripts/tag_release.sh` now pushes tags in batches of
`TAG_PUSH_BATCH_SIZE=3` instead of one atomic push, so every release tag
reliably gets its own push event.

## Test plan
- [x] `bash -n scripts/tag_release.sh`
- [x] `./scripts/tag_release.sh --help`
- [x] `./scripts/tag_release.sh -d -v` (dry run against current `main`,
confirms detection logic unaffected)
- [x] Manually verified batching behavior by reproducing the incident:
17 tags stuck with no release, delete+re-push in batches of 3 fixed all
17

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Description

Adds `share_desktop` to `agent-relay-cursor`. When set, the worker
starts with `--share-desktop=view_and_control`, so people can watch or
take control of the agent's desktop from the Desktop tab in Cursor. It
requires `computer_use = true` (validated) and TigerVNC/Xfce in the
image, e.g. `ghcr.io/coder/agent-relay-workspace:desktop`
(coder/agent-relay#86).

The mode is passed explicitly because `--share-desktop` takes an
optional argument and, bare, swallows the following `start`.

## Type of Change

- [x] Feature/enhancement

## Module Information

**Path:** `registry/coder/modules/agent-relay-cursor`  
**New version:** `v0.4.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`: 19 pass; `terraform test`: 12 pass)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally: end to end on a local Coder with Agent
Relay, a Cursor pool agent was dispatched into a workspace on the
desktop image with `computer_use` + `share_desktop`. The worker ran with
`--computer-use --share-desktop=view_and_control`, started Xtigervnc and
Xfce, and `agent worker debug` reported computer use ready and desktop
share supported. The agent's desktop showed up live in Cursor's Desktop
tab.

## Related Issues

coder/agent-relay#86

https://claude.ai/code/session_01L2wLoUuHsK2Nzm93TjjoMi
## Description

Adds a `herdr` module: runs [Herdr](https://herdr.dev) — a
terminal/agent-session manager that detects and drives coding agents
(Claude Code, Codex, OpenCode, and others) in persistent background
panes — inside a Coder workspace, and optionally installs Herdr
[plugins](https://herdr.dev/docs/plugins/) non-interactively via `herdr
plugin install <spec> --yes`.

Herdr has no documented headless/daemon startup mode, so this module
gives it one via a detached `tmux` session, so the server keeps running
independent of the `coder_script` that launched it.

Key design points:
- `plugins` (opt-in `list(string)`, default `[]`) — each entry is an
`owner/repo` spec installed non-interactively on every start. Installing
a plugin only registers it; most plugins still need their own one-time
interactive setup from a workspace terminal afterwards (documented in
the README).
- `app_port` (optional) — exposes a plugin's own local web UI as a
`coder_app` tile.
- `post_start_script` (optional) — runs after Herdr and all configured
plugins are up, so callers can work around plugin-specific gaps (e.g. a
plugin's setup wizard assuming infrastructure the workspace doesn't
have) without the module itself needing to know about any specific
plugin.

## Type of Change

- [x] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/gojnimer6553/modules/herdr`
**New version:** `v1.0.0`
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`terraform test`: 14/14, `bun test main.test.ts`:
10/10 against real Docker containers)
- [x] Code formatted (`bun run fmt`, shellcheck clean)
- [x] Changes tested locally, including against the real `herdr` CLI and
a real Herdr plugin (`AltanS/collie`) in a live Coder workspace template

## Related Issues

None

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: DevelopmentCats <chris@dualriver.com>
…oder#1140)

## Summary

Adds a new `coder-labs/pi` module that installs and configures the
[Pi](https://pi.dev/) coding agent CLI in a Coder workspace, following
the same install-only pattern as the `codex` and `claude-code` modules
(install/auth via `coder-utils`, starting the CLI is left to the
caller).

## Changes

- New module `registry/coder-labs/modules/pi`: installs Pi via `npm
install -g @earendil-works/pi-coding-agent` into a user-owned prefix
(with version pinning), wires `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` /
`GEMINI_API_KEY` plus an `extra_env` map for other supported providers,
writes `defaultProjectTrust` into `~/.pi/agent/settings.json`, and
supports optional `workdir` pre-creation and
`pre_install_script`/`post_install_script` hooks.
- `enable_ai_gateway` routes Pi's `anthropic` and `openai` providers
through Coder AI Gateway with the owner's session token.
Pi ignores `ANTHROPIC_BASE_URL`, so the gateway endpoints are written as
`baseUrl` overrides in `~/.pi/agent/models.json` (other keys preserved).
- `npm_registry_url` installs from an internal npm mirror;
`pi_binary_path` points `install_pi = false` at a preinstalled binary
outside `PATH`.
- README covers auth paths (AI Gateway, `/login`, sensitive variables),
Agent Firewall, session continuity (`pi --continue` + tmux), managed
configuration, and a network access / air-gapped section; adds a preview
image (`registry/coder-labs/.images/pi.png`, from Pi's MIT-licensed
docs).
- Adds the official Pi logo at `.icons/pi.svg` (sourced from
`pi.dev/logo-auto.svg`).
- Ignores the local `.worktrees/` directory used for isolated branch
work.

## Testing

- `terraform test`: 18/18 passing
- `bun test registry/coder-labs/modules/pi` (Docker): 16/16 passing,
including real npm installs with and without `npm_registry_url`
- `shellcheck` on the rendered install script, `bun x prettier --check`,
`terraform fmt -check`, `go run ./cmd/readmevalidation`: clean
- Verified manually against Pi 0.87.1 and a mock HTTP server that a
`models.json` `baseUrl` override sends Anthropic requests to
`<base>/v1/messages` with `X-Api-Key` and OpenAI requests to
`<base>/v1/responses` with a bearer token, both of which AI Gateway
accepts.

## Notes

- The `/icon/pi.svg` icon referenced by the module's
`coder_script`/`coder_app` resources does not yet exist in
`coder/coder`'s `site/static/icon/`. A companion PR adds it there:
coder/coder#29687

---
🤖 Generated by Coder Agents on behalf of @nickvigilante.
Link the standalone code-mode helper into the CLI and Coder script bin directories while preserving the active release symlink across upgrades. Create fixture directories before writing mock binaries in the regression test.

Refs: openai/codex#31831
@fdobrovolny
fdobrovolny force-pushed the fix/codex-code-mode-host-path branch from 655f9f7 to 409a462 Compare October 2, 2026 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants