Repository navigation
Show tool errors instead of silence, gemini sign-in check, drop amp - #78
Merged
Merged
Conversation
Found by the live tool smoke test.
- Silent answers: lash/opencode exit 0 and print errors only to stderr, so
the generic path showed nothing. Exit 0 with no stdout now gets the
failure frame ("<tool> finished without an answer" + stderr tail). The
server path answered 200 with no text and the reason in .info.error, shown
as "(no text response)"; it is now shown as "Error from <tool>: <reason>".
- gemini with no login asks "[Y/n]" on the terminal to open a browser,
hidden behind the spinner, so Lacy hung. _lacy_gemini_signed_in checks for
a login first (key env/.env, non-OAuth auth, token file, macOS keychain
gemini-cli-oauth) and says how to sign in.
- zsh spinner job notices: "[N] done { trap ... }" and "you have running
jobs" on exit. The spinner is now disowned in zsh too (`disown %%`; zsh's
disown takes a job spec). The interrupt path keeps its `wait` for Ctrl+C
landing between `&` and the disown.
- codex refused to run outside a git repo ("Not inside a trusted
directory"): add --skip-git-repo-check to the command and resume hint.
- Install hints installed the wrong software: `brew install claude` (desktop
app), `brew install gemini` (a duplicate-file cleaner), `brew install
goose` (a Go DB migration tool), `brew install opencode` (no formula),
`gh extension install github/gh-copilot` (no `copilot` binary). Now the
official npm packages, and block-goose-cli.
- `lacy setup` offers to install a tool that is not installed (clack
confirm) and sets it only if the install worked; `tool set` points there.
INSTALL_CMDS in index.mjs is checked against lacy_tool_install_cmd.
- Remove amp from every tool list, command, and doc.
- Live suite: OpenCode Zen's free-tier refusal counts as not signed in.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the Lacy bugs the live tool smoke test found, and removes amp.
Bugs
Silent answers. lash and opencode exit 0 and print errors only to stderr, so Lacy showed nothing. Now: " finished without an answer" plus the stderr tail. The server path gets the same treatment: a 200 with no text and the reason in
.info.errorused to show(no text response)and now showsError from lash: OpenCode's free tier can only be used from within OpenCode.gemini hang. With no login, gemini asks
[Y/n]on the terminal to open a browser, and that question sat hidden behind the spinner. Lacy now checks for a login first (key env or .env, non-OAuth auth type, token file, macOS keychaingemini-cli-oauth) and says how to sign in.zsh spinner job notices (
[N] done { trap ... }, "you have running jobs"). The spinner is now disowned in zsh too. The Ctrl+C path keeps itswaitfor an interrupt that lands between&and the disown. I caught that race under load in the full suite.codex outside a git repo failed with "Not inside a trusted directory". Added
--skip-git-repo-checkto the command and the resume hint.Install hints installed the wrong software:
brew install claudeinstalls the Claude desktop app.brew install geminiinstalls a duplicate-file cleaner.brew install gooseinstalls a Go database migration tool.brew install opencodehas no formula.gh-copilotdoesn't provide acopilotbinary.They now use the official npm packages, and
block-goose-clifor goose.Changes
lacy setupoffers to install a missing tool (clack confirm) and sets it only if the install worked.tool setpoints there. A test keepsINSTALL_CMDSinindex.mjsin sync withlacy_tool_install_cmd.Tests: new cases for the silent answer, the gemini sign-in check, the 200-with-error reply (lash and opencode), and the spinner not appearing in the zsh job table. The job-table case fails on main with
JOBS=1. All regular suites pass locally. The zsh adapter and fish suites each flaked once under heavy machine load and passed twice on rerun. The zsh flake was the Ctrl+C race above, now fixed.