feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui#7683
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 495e7e951b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| type SetSessionModelResponse, | ||
| } from "@agentclientprotocol/sdk"; | ||
| import { GooseExtClient } from "./generated/client.gen.js"; | ||
| import { createHttpStream } from "./http-stream.js"; |
There was a problem hiding this comment.
Add missing http-stream source to ACP package
GooseClient now imports createHttpStream from ./http-stream.js, but this commit does not add a corresponding ui/acp/src/http-stream.ts file (and index.ts also re-exports it), so npm run build/tsc for ui/acp fails with a module-resolution error and blocks publishing/consuming @block/goose-acp.
Useful? React with 👍 / 👎.
495e7e9 to
6f6970a
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6f6970ab98
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| <App serverUrl={serverUrl} initialPrompt={cli.flags.text} />, | ||
| ); | ||
|
|
||
| await waitUntilExit(); |
There was a problem hiding this comment.
Terminate spawned server when Ink app exits
When --server is omitted, main() spawns a bundled goose-acp-server process, but after the UI exits it only awaits waitUntilExit() and returns without calling cleanup(). Because Ctrl+C is handled inside useInput via exit() (not a real SIGINT), the signal handlers do not run, so the child process remains alive and keeps the Node event loop open; this makes one-shot mode (--text) and normal in-app exits hang instead of terminating cleanly.
Useful? React with 👍 / 👎.
…nfig from jackamadeo/package-tui - New TUI implementation (tui.tsx) with markdown rendering, tool call cards, turn-based history navigation, scrollable body, and splash screen - Added colors.tsx, markdown.tsx, toolcall.tsx modules - Removed app.tsx (replaced by tui.tsx) - cli.tsx updated to import App from tui.tsx (keeps server auto-launch logic) - package.json has publishing config (@block/goose, bin, files, optionalDeps) plus new deps (marked, marked-terminal) Co-authored-by: Jack Amadeo <[email protected]>
6f6970a to
b2257cd
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b2257cd5fe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| const start = Date.now(); | ||
| while (Date.now() - start < timeoutMs) { | ||
| try { | ||
| const res = await fetch(`${url}/status`); |
There was a problem hiding this comment.
Probe bundled ACP server on the correct health endpoint
When --server is omitted, startup now waits for the spawned goose-acp-server to become ready, but this probe hits "/status"; the ACP server router exposes "/health" (see crates/goose-acp/src/transport.rs), so the check never returns res.ok and times out after 10s before killing the child process. In practice, this breaks the default bundled-server launch path for users who rely on auto-start instead of passing --server.
Useful? React with 👍 / 👎.
| @@ -0,0 +1,7 @@ | |||
| { | |||
| "private": true, | |||
There was a problem hiding this comment.
what does private do here? will this change how the desktop is built at all?
There was a problem hiding this comment.
it just means this itself won't be registered as a publishable module by npm
we only want to publish the constituent packages
…e-issue * origin/main: feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) gh fall back (#7695) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619)
…deps * origin/main: (34 commits) fix: reduce server log verbosity — skip session in instrument, defaul… (#7729) fix: provider test infrastructure (#7738) fix: sanitize streamable HTTP extension names derived from URLs (#7740) refactor: derive GooseMode string conversions with strum (#7706) docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525) fix: flake.nix (#7224) delete goose web (#7696) Add @angiejones as CODEOWNER for documentation (#7711) Add MLflow integration guide (#7563) docs: LM Studio availability (#7698) feat: add Avian as an LLM provider (#7561) Adds `linux-mcp-server` to the goose registry (#6979) fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708) feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) gh fall back (#7695) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619) ... # Conflicts: # Cargo.lock
* origin/main: (21 commits) fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335) fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571) fix: write to real file if config.yaml is symlink (#7669) fix: preserve pairings when stopping gateway (#7733) fix: reduce server log verbosity — skip session in instrument, defaul… (#7729) fix: provider test infrastructure (#7738) fix: sanitize streamable HTTP extension names derived from URLs (#7740) refactor: derive GooseMode string conversions with strum (#7706) docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525) fix: flake.nix (#7224) delete goose web (#7696) Add @angiejones as CODEOWNER for documentation (#7711) Add MLflow integration guide (#7563) docs: LM Studio availability (#7698) feat: add Avian as an LLM provider (#7561) Adds `linux-mcp-server` to the goose registry (#6979) fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708) feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) ...
* origin/main: (21 commits) fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335) fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571) fix: write to real file if config.yaml is symlink (#7669) fix: preserve pairings when stopping gateway (#7733) fix: reduce server log verbosity — skip session in instrument, defaul… (#7729) fix: provider test infrastructure (#7738) fix: sanitize streamable HTTP extension names derived from URLs (#7740) refactor: derive GooseMode string conversions with strum (#7706) docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525) fix: flake.nix (#7224) delete goose web (#7696) Add @angiejones as CODEOWNER for documentation (#7711) Add MLflow integration guide (#7563) docs: LM Studio availability (#7698) feat: add Avian as an LLM provider (#7561) Adds `linux-mcp-server` to the goose registry (#6979) fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708) feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) ...
Combines
#7395
#7666
making it possible for us to publish all three of the npm packages that will power the new TUI with an embedded
goose-acpI added one more architectural improvement I thought of which was to bring the stream creation into
ui/acp