Skip to content

feat(lucebox): agent-client launchers + harness adapter package (stacked on tuning)#6

Open
easel wants to merge 1 commit into
feat/lucebox-tuningfrom
feat/lucebox-clients
Open

feat(lucebox): agent-client launchers + harness adapter package (stacked on tuning)#6
easel wants to merge 1 commit into
feat/lucebox-tuningfrom
feat/lucebox-clients

Conversation

@easel

@easel easel commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Stacked on the tuning PR (#5), which is stacked on Luce-Org#335. Base is `feat/lucebox-tuning`, so this PR's diff is only the agent-client cluster. Review/merge last.

Summary

Restores the final deferred cluster: the agent-client launch surface.

  • harness/ becomes an installable package again (`bench.py` + the six client adapters: claude_code, codex, hermes, openclaw, opencode, pi, plus `_common` and `run_lucebench.sh`) and rejoins the uv workspace.
  • cli.py: the `claude/codex/opencode/hermes/pi/openclaw` verbs (registered from one factory) + `_detect_server_url` / `_exec_client`. These reuse `profile._server_base_urls` from the tuning PR — which is why this stacks on it.
  • CI runs the harness pytest suite alongside lucebox again.

`recommend_preset` stays in `download.py` (core's relocation), so the models sub-app is unaffected.

Tests

lucebox + harness 156 passed, wrapper 55 passed, ruff + mypy + shellcheck clean.

🤖 Generated with Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 42fa765f41

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

return _client_command


for _verb, _module_name, _label in _CLIENT_VERBS:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Wire client verbs through the host wrapper

When these new verbs are invoked as advertised through lucebox.sh (for example lucebox claude) while the service is running, the wrapper still treats them as unknown commands: _lucebox_prefer_exec only whitelists config/smoke/models/check/profile/print-run/print-serve-argv/autotune, and the wrapper also does not propagate CLIENT_WORK_DIR or per-client *_BIN overrides. That routes the launchers into a fresh container with no configured agent binary path, so harness.clients._common.find_bin fails with FileNotFoundError instead of starting the client.

Useful? React with 👍 / 👎.

Comment on lines +164 to +166
parser = build_base_parser("harness-opencode")
parser.add_argument("--max-ctx", type=int, default=32768)
parser.add_argument("--max-tokens", type=int, default=4096)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Expose the advertised project-dir escape hatch

In the interactive harness-opencode path, write_config refuses to overwrite an existing opencode.json and tells the user to pass --project-dir, but main() never defines that option or forwards a project_dir value to launch. In any project that already has an OpenCode config, the CLI exits 2 with no way to choose a fresh directory even though the launch function supports that escape hatch.

Useful? React with 👍 / 👎.

@easel easel force-pushed the feat/lucebox-tuning branch from 39087d8 to 9f63eea Compare June 16, 2026 23:12
@easel easel force-pushed the feat/lucebox-clients branch from 42fa765 to bf10ef4 Compare June 16, 2026 23:14
@easel easel force-pushed the feat/lucebox-tuning branch from 9f63eea to a9a1f30 Compare June 17, 2026 05:09
@easel easel force-pushed the feat/lucebox-clients branch from bf10ef4 to 6340361 Compare June 17, 2026 05:10
Stacked on the tuning PR (which is stacked on core Luce-Org#335). Restores the
last deferred cluster: the agent-client launch surface.

- harness/ becomes an installable package again (bench.py + the six client
  adapters: claude_code, codex, hermes, openclaw, opencode, pi, plus
  _common and run_lucebench.sh) and rejoins the uv workspace.
- cli.py: the claude/codex/opencode/hermes/pi/openclaw verbs, registered
  from one factory, plus _detect_server_url / _exec_client (which reuse
  profile._server_base_urls from the tuning PR — hence this stacks on it).
- CI runs the harness pytest suite alongside lucebox again.

recommend_preset stays in download.py (core's relocation), so the models
sub-app is unaffected.

lucebox + harness 156 passed, wrapper 55 passed, ruff + mypy + shellcheck
clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@easel easel force-pushed the feat/lucebox-clients branch from 6340361 to a0f0a88 Compare June 17, 2026 05:11
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.

1 participant