Skip to content

feat: upgrade ink for performance, and use stdio not http#8004

Merged
michaelneale merged 8 commits into
mainfrom
micn/ink-version-stdio
Mar 20, 2026
Merged

feat: upgrade ink for performance, and use stdio not http#8004
michaelneale merged 8 commits into
mainfrom
micn/ink-version-stdio

Conversation

@michaelneale
Copy link
Copy Markdown
Collaborator

Don't use http, use studio as better, more secure (and means can have many running)

@michaelneale michaelneale changed the title feat: ink version stdio tui feat: upgrade ink for performance, and use stdio not http Mar 19, 2026
Copy link
Copy Markdown

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

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: 89eec86cc1

ℹ️ 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".

Comment thread ui/text/src/tui.tsx
Comment thread ui/text/package.json
Comment on lines +28 to +33
"ink": "^6.8.0",
"ink-text-input": "^6.0.0",
"marked": "^15.0.12",
"marked-terminal": "^7.3.0",
"meow": "^13.2.0",
"react": "^18.3.1"
"react": "^19.2.4"
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 Update the ui/text lockfile with these dependency changes

These version bumps were only recorded in the workspace lockfile; ui/text/package-lock.json:15-31 still pins ink@^5.1.0, react@^18.3.1, and does not include the new marked packages. That leaves the package's documented cd ui/text && npm install path on a different dependency set, and npm ci in ui/text will now fail because npm expects package.json and package-lock.json to stay in sync (see the npm install/ci docs: https://docs.npmjs.com/cli/v11/commands/npm-install/).

Useful? React with 👍 / 👎.

@alexhancock
Copy link
Copy Markdown
Collaborator

(and means can have many running)

worth thinking through what the limitations might be for the http version in this area, but I agree using stdio for tui makes sense

Comment thread ui/package.json Outdated
]
],
"overrides": {
"react": "19.2.4"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

why do we need this? Ink not depending on a version we like?

could this be in ui/text/package.json instead?

@jamadeo
Copy link
Copy Markdown
Member

jamadeo commented Mar 19, 2026

architecturally stdio makes sense. I think this began life as a PoC for the http transport

Comment thread crates/goose-acp/src/bin/server.rs Outdated
@michaelneale
Copy link
Copy Markdown
Collaborator Author

@jamadeo or should we stick with http as GUI will use it, and keeps thing ready for having one daemon running ? (I can patch the http one so if launches free port and secret so it works like it is one biinary for now?)

Copy link
Copy Markdown

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

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: 2bc2dd316d

ℹ️ 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".

Comment thread ui/text/src/tui.tsx Outdated
Comment thread ui/text/src/tui.tsx Outdated
Copy link
Copy Markdown

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

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: 3260018ec7

ℹ️ 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".

Comment thread ui/text/src/tui.tsx Outdated
@alexhancock
Copy link
Copy Markdown
Collaborator

alexhancock commented Mar 20, 2026

@jamadeo or should we stick with http as GUI will use it, and keeps thing ready for having one daemon running ? (I can patch the http one so if launches free port and secret so it works like it is one biinary for now?)

No big deal either way what transport the TUI uses for now. If there isn't a performance issue with using HTTP I think it's good to use it as a reference implementation, but not required.

I do think it would be good if goose-acp can do either, and then npx @aaif/goose acp (and goose acp if we want to keep that in the small rust based scripting cli we'll keep) becomes a literal passthrough to the server running in stdio mode.

So this PR looks good to go to me

Copy link
Copy Markdown

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

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: 64f7038434

ℹ️ 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".

Comment thread ui/text/package.json
Comment thread npm/goose-acp-server-linux-x64/package.json
@michaelneale michaelneale enabled auto-merge March 20, 2026 01:21
@michaelneale michaelneale added this pull request to the merge queue Mar 20, 2026
Copy link
Copy Markdown

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

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: c93a7a0efd

ℹ️ 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".

Comment thread ui/text/src/tui.tsx
Comment on lines +1148 to +1155
serverProcess = spawn(binary, ["acp"], {
stdio: ["pipe", "pipe", "ignore"],
detached: false,
});

try {
await waitForServer(DEFAULT_URL);
} catch (err) {
console.error((err as Error).message);
serverProcess.kill();
process.exit(1);
}
serverProcess.on("error", (err) => {
console.error(`Failed to start goose acp: ${err.message}`);
process.exit(1);
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 Fail fast when the spawned ACP process exits

If the bundled goose binary rejects acp or aborts during startup, Node will emit an exit/close event rather than error. This path only listens for error and also discards stderr, so the TUI still renders and then fails later with an opaque transport error instead of surfacing the real startup problem. The old HTTP path waited for readiness before entering the UI; the stdio path needs an equivalent exit/readiness check.

Useful? React with 👍 / 👎.

Merged via the queue into main with commit 565b06b Mar 20, 2026
22 checks passed
@michaelneale michaelneale deleted the micn/ink-version-stdio branch March 20, 2026 01:36
cloorc added a commit to LeafAI/Leaf-ARC that referenced this pull request Mar 20, 2026
…#8004) - CLI parts only

Cherry-picked leaf/leaf-acp related changes:
- Add /status route to ACP transport
cloorc added a commit to LeafAI/Leaf-ARC that referenced this pull request Mar 20, 2026
…#8004) - CLI parts only

Cherry-picked leaf/leaf-acp related changes:
- Add /status route to ACP transport
elijahsgh pushed a commit to elijahsgh/goose that referenced this pull request Mar 21, 2026
elijahsgh pushed a commit to elijahsgh/goose that referenced this pull request Mar 21, 2026
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.

3 participants